1、目录一、设计要求-二、设计目的-三、设计方案-四、设计原理-五、硬件要求-六、调试与问题疑点-七、设计步骤-八、体会、对设计工作的总结与展望-一、设计要求(1)设计带计数允许和复位输入的100进制计数器,要求完成顶层电路图和底层VHDL文件;(2)进行功能仿真;(3)下载并验证计数器功能;(4)按上述步骤设计100进制计数器;(5)为上述设计建立元件符号。二、设计目的(1)设计一个带计数允许和复位端的100进制计数器。(2)熟练掌握各种计数器类型模块的描述方法。(3)能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。(4)体会EDA技术的优点。三、设计方案 设计两个按键,一个有停止、
2、开始的功能,另一个有复位清零的功能,具体的看表1-1。 表1-1按键状态功能EnEn=1开始计时En=0停止计时RstRst=0复位清零 通过分频分出1KHZ对数码管的位地址进行扫描,而100KHZ利用if-else设计计数程序,并输出显示信号。利用多个进程来完成以上的设计方案。四、设计原理library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity bcd_100d isport(en,rst,clk:in std_logic; duan
3、:out std_logic_vector(5 downto 0); cout:out std_logic_vector(6 downto 0);end;architecture one of bcd_100d issignal clk_1k:std_logic;signal clk_100h:std_logic;signal cnt6:integer range 0 to 3;signal data:std_logic_vector(3 downto 0);signal data1:std_logic_vector(3 downto 0);signal dout:std_logic_vect
4、or(5 downto 0);signal s:std_logic_vector(6 downto 0);signal led1,led2,led3,led4:std_logic_vector(3 downto 0);begin process (clk) variable cnt1:integer range 0 to 250; variable cnt2:integer range 0 to 100; begin if clkevent and clk=1 then if cnt1=250 then cnt1:=0; if cnt2=100 then cnt2:=0; clk_1k=not
5、 clk_1k; else cnt2:=cnt2+1; end if; else cnt1:=cnt1+1; end if; end if; end process; process (clk) variable cnt1:integer range 0 to 4000; variable cnt2:integer range 0 to 4000; begin if clkevent and clk=1 then if cnt1=4000 then cnt1:=0; if cnt2=4000 then cnt2:=0; clk_100h=not clk_100h; else cnt2:=cnt
6、2+1; end if; else cnt1:=cnt1+1; end if; end if; end process; process(clk_1k) begin if clk_1kevent and clk_1k=1 then if cnt6=3 then cnt6=0; else cnt6doutdoutnull; end case;end process;process(dout)begin case dout is when111110=datadatanull; end case;end process;process(clk_100h)beginif rst=0 thenled2
7、=0000;led1 led1 led2=0000; led1 led2 led1ssssssssssnull; end case;end process;duan=dout;cout=s;end;五、硬件要求 表2-1六、调试与问题疑点 问题疑点:1. 怎样实现两数码管同时显示.2. 怎样实现数字的循环.调试:1. 编译无误,然后就对照自己所设计的功能按键状态(表1-1),看是否符合设计结果要求.2. 检查无误,然后对自己规定的设计方案分配引脚(表2-1),进行编译无误,就下载到实验板上来验证设计效果.如果与自己的想法有出入,就要进行修改最后要达到自己的结果.3. 验证的结果与是否符合自己所规定的设计方案.七、设计步骤 显示进程计数进程分频进程 100HZ 输出数码管段码信号 1K数码管位地址扫描 输出位选信号 八、体会、对设计工作的总结与展望 在这次设计实验中,我深刻地体会到思路清晰是十分行重要的,从分频开始,到数码管显示,再到实现计数。每一步都是非常重要的,刚开始时我就遇到了: 怎样实现两数码管同时显示, 怎样实现数字的循环这两个问题思路也很模糊,但参考了大量的资料后,我的思路也就渐渐地清晰了,问题也解决了。这使我明白了参考资料能使我们学到很多课堂上无法学到和知识。我相信在以后的设计中,只要肯思考就一定会有突破。 .