CPLD大作业

发布 2020-02-25 07:42:28 阅读 9530

cpld大作业(2007.6.28)

题目:设计数字钟,要求数字钟的秒针部分由50进制计数器组成,分针部亦由50进制计数器组成,时钟部分为24进制组成。

根据题意可有两种设计方案,一种是由一个模块实现的数字钟,另一种是由三个模块实现的数字钟。

1. 一个模块实现的数字钟设计方案。

1) 程序。

library ieee;

use entity clk11 is

port(clrn,ldn,en,clk : in std_logic;

sa, ma, hain integer range 0 to 9;

sb, mbin integer range 0 to 4;

hbin integer range 0 to 2;

qsa,qma,qha : out integer range 0 to 9;

qsb,qmbout integer range 0 to 4;

qhbout integer range 0 to 2

end clk11;

architecture a of clk11 is

beginprocess (clk)

variable tmpsa,tmpma,tmpha : integer range 0 to 9;

variable tmpsb, tmpmb : integer range 0 to 4;

variable tmphbinteger range 0 to 2;

beginif clrn='0' then

tmpsb :=0; tmpsa :=0;

tmpmb :=0; tmpma :=0;

tmphb :=0; tmpha :=0;

else if (clk'event and clk='1') then

if ldn='0' then

tmpsa:=sa; tmpsb:=sb; tmpma:=ma; tmpmb:=mb;

tmpha:=ha; tmphb:=hb;

elsif en='1' then

if (tmpsb=4 and tmpsa=9 and tmpmb=4 and tmpma=9) then

if (tmphb=2 and tmpha=3) then

tmpha:=0; tmphb:=0 ;

elsif tmpha=9 then

tmpha:=0; tmphb:=tmphb+1;

else tmpha:=tmpha+1;

end if;

end if;

if (tmpsb=4 and tmpsa=9) then

if tmpma=9 then

tmpma:=0;

if tmpmb=4 then tmpmb:=0;

else tmpmb:=tmpmb+1;

end if;

else tmpma:=tmpma+1;

end if;

end if;

if tmpsa=9 then

tmpsa:=0;

if tmpsb=4 then tmpsb:=0;

else tmpsb:= tmpsb+1;

end if;

else tmpsa :=tmpsa+1;

end if;

end if;

end if;

end if;

qsa<=tmpsa; qsb<=tmpsb;

qma<=tmpma; qmb<=tmpmb;

qha<=tmpha; qhb<=tmphb;

end process ;

end a;

2)电路图。

3)波形图。

4)分析。从波形图可见当秒针计数器满50秒,有进位;当分针计数器满50分钟,有进位;当小时计数器满24小时,计数器清零,可见,达到了设计要求。

2. 由三个模块实现的数字钟设计方案。

1)程序。程序1(24小时计数器):

library ieee;

use entity cout24_v is

port(clrn,ldn,en,clk : in std_logic;

da : in integer range 0 to 9;

db : in integer range 0 to 9;

qa : out integer range 0 to 9;

qb : out integer range 0 to 2

end cout24_v;

architecture a of cout24_v is

beginprocess (clk)

variable tmpa :integer range 0 to 9;

variable tmpb :integer range 0 to 9;

beginif clrn='0' then tmpb :=0; tmpa :=0;

else if (clk'event and clk='1') then

if ldn='0' then

tmpa :=da; tmpb:=db;

elsif en='1' then

if tmpa=9 then

tmpa:=0; tmpb:=tmpb+1;

elsif (tmpb=2 and tmpa=3) then

tmpb:=0; tmpa:=0;

else tmpa :=tmpa+1;

end if;

end if;

end if;

end if;

qa <=tmpa; qb <=tmpb;

end process ;

end a;

程序2(50进制计数器):

library ieee;

use use

entity cout50_v11 is

port(clrn,ldn,en,clk : in std_logic;

da : in std_logic_vector(3 downto 0);

db : in std_logic_vector(2 downto 0);

qa : out std_logic_vector(3 downto 0);

qb : out std_logic_vector(2 downto 0);

rco : out std_logic

end cout50_v11;

architecture a of cout50_v11 is

beginprocess (clk)

variable tmpa :std_logic_vector(3 downto 0);

variable tmpb :std_logic_vector(2 downto 0);

beginif clrn='0' then tmpb :=000"; tmpa :=0000";

else if (clk'event and clk='1') then

if ldn='0' then tmpa :=da; tmpb:=db;

elsif en='1' then

if tmpa="1001" then

tmpa:="0000";

if tmpb="100" then tmpb:="000";

else tmpb:= tmpb+1;

end if;

else tmpa :=tmpa+1;

end if;

end if;

end if;

end if;

qa <=tmpa; qb <=tmpb;

rco<= tmpb(2) and tmpa(0) and tmpa(3) and en;--十位为'100',即4,个位为'1001'即9时,执行进位。

CPLD大作业 电子时钟设计

cpld大作业报告。电子时钟设计。姓名 班级 控制 学号 2015 实验日期 2015年12月15日。一 实验内容 1.使用cpld设计电子钟电路框图,并对主要功能进行解释 2.设计小时 分 秒处理功能模块的vhdl程序 二 实验要求 1.编写小时 分 秒处理功能模块编程。2.对 图形进行分析,对关...

CPLD课程设计指导手册

测控专业 编制 王宗省2012年6月20日。cpld课程设计是继随堂实验课之后的实践教学单元,是学生将所学可编程器件的理论 知识要点 技术要点 编程方法等运用于实践的第二个步骤,是可编程器件课程的重要教学环节。为规范本课程设计的各组成部分,使学生通过本课程设计,能在意识上建立理论与实践相连接的通道,...

工厂供电 大作业 大作业

某机械厂为三班工作制。本厂通过一条长8km的lj 95型叫架空线从地区变电所获得电源,电压为10kv。本厂东南方向6km处还有一条10kv电缆线路可供使用。低压侧有一220 380v低压联络线可供使用。本地区冬天北风,夏天南风,年平均气温 室内28 室外30 安装时环境温度按30 考虑,本厂有部分二...