EDA实验FPGAvhdl两个数码管显示12进制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA实验FPGAvhdl两个数码管显⽰12进制
⼀、实验⽬的
学习时序电路的设计,特别是计数器的设计、仿真和硬件测试,进⼀步熟悉VHDL设计技术。
⼆、实验要求
1、⽤VHDL语⾔设计4位加法计数器为同步⼗⼆进制计数器,并
具有异步清零,同步使能的功能。
2、⽤EDA6000实验仪进⾏实验结果的验证。
三、实验原理
设计带有异步复位和同步时钟使能的4位加法计数器,所谓同步或异步都是相对时钟⽽⾔的。
不依赖于时钟⽽有效的信号称为异步信号,反之为同步信号。
因此,在使⽤VHDL语⾔设计该电路时,要注意时钟的使能信号发⽣时刻,以及进程语句的启动信号处理。
四、实验内容
1、⽤VHDL语⾔编写出含异步清零和同步时钟使能的加法器电
路程序;通过QuartysⅡ进⾏编辑、编译、综合、适配、仿真
测试,给出其所有的信号的时序仿真波形。
2、按实验要求锁定管脚,重新综合。
3、在EDA6000软件中建⽴实验模式。
4、下载设计⽂件;硬件验证计数器的⼯作性能。
5、熟悉嵌⼊式逻辑分析仪,使⽤Signaltag 2对此计数器进⾏实
时测试。
五、实验结果
1、调试
⾸先建⼯程按照实验要求写好程序,确定程序运⾏⽆误后,进⾏波形仿真,这⾥有⼀点⾮常重要,就是输⼊,输出的进制问题,还有就是该电路为时序电路,要做成时序电路进⾏仿真。
其次定义管脚,在Quartus II软件上进⾏管脚定义,为了⽅便这⾥定义管脚如上⾯所⽰。
然后再运⾏程序。
在对EDA6000建⽴相应实验模式。
由先前的定义管脚,在EDA6000中找到对应的IO脚,对软件中的数码管连接类型进⾏相应设置,分别设置好按键。
在EDA6000的CLK0(I030)设置1HZ,也就是⾃动产⽣1HZ脉冲波进⾏计数。
2、验证
(1)当RST为⾼电平,EN为低电平时,CQ输出为0,即计数清零,禁⽌计数。
(2)当RST为低电平时,EN为⾼电平时,每⼀个CLK的上升沿后,CQ输出加1,当有第⼗⼀个上升沿时,CO输出进
位信号。
当两个数码管显⽰为11时,CO、CQ清零,从新
计数。
3、波形图
4、实验程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity CNT12 is
port( clk,rst,en : in std_logic;
Co : out std_logic_vector( 3 DOWNTO 0); cq : out std_logic_vector( 3 DOWNTO 0) );
end CNT12;
architecture rtl of CNT12 is
signal q1 : std_logic_vector(3 downto 0);
signal q2 : std_logic_vector(3 downto 0);
begin
Co<="0001" when (q2= "0001" ) else "0000";
cq<=q1(3 downto 0) ;
process (clk, rst, en)
begin
if rst = '1' then
q1<= "0000"; q2<= "0000";
elsif (clk'event and clk = '1') then
if en = '1' then
if(q2= "0001" and q1= "0001") then
q1<= "0000"; q2<= "0000";
elsif (q1="1001")then
q1<="0000";q2<=q2+1;
else q1<=q1+1;
end if;
end if;
end if;
end process;
end rtl;
六、⼼得体会
这次试验,我们预习的很不充分,所需程序没有在课前准备好,所以把实验的时间花在了修改程序上。
这样对我们来说是很⼤的损失。
⽽且在修改程序时遇到很多问题,证明我们没有掌握好VHDL 的基本语法。
所以以后⼀定要认真学习VHDL。
并且要在做实验之前做好充分的预习。
这样才会提⾼实验效率。
这次的报告是在课后时间⾃⼰调试成功完成的。
这次修改的程序可以通过修改when等相应地⽅就可以实现各种进制,如两个数码管可以实现显⽰100进制。