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 考虑,本厂有部分二...