两位十进制计数器显示实验.doc
自动化学院EDA实验指导书实验四 两位十进制计数器显示实验综合实验一、实验目的1、 学生在掌握所学知识(模拟电路、数字电路、VHD语言等)的基础之上,通过进行该实验可将有关知识的连贯起来,提高自己本身的综合能力。2、 该实验的参考程序有错,学生通过该实验可以深入的了解和掌握EDA。二、实验要求1、 编写计数器程序。2、 编写扫描显示程序。3、 组成两位十进制计数器的显示功能。三、实验设备1、 计算机 一台2、 EDA实验箱 一台四、实验提示(1) 该实验应该分为三部分完成:计数器模块、扫描显示模块和综合部分。(2) 输入信号:计数信号、手动清零、手动允许和手动复位信号。(3) 输出信号:七段码输出信号和位选编码信号。(4) 接口引脚的分配,参考附录三。五、实验报告要求1、 分别叙述计数器和扫描显示的工作原理和设计原理。2、 绘制它们的程序流程图并进行程序分析。3、 详细叙述和总结实验过程并进行仿真实验与硬件实验的分析。参考1、LED显示程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity tled isport(din:instd_logic_vector(7 downto 0); sn: out std_logic_vector(2 downto 0); clk: in std_logic; LED7:outstd_logic_vector(6 downto 0);end tled;architecture behv of tled issignal he: std_logic_vector(3 downto 0); signal ds: std_logic_vector(2 downto 0); beginprocess (din)begin 。when "0000" =>LED7 <="0111111" -"0" / 39hwhen "0001" =>LED7 <="0000110" -"1" / 06hwhen "0010" =>LED7 <="1011011" -"2" / 5Bhwhen "0011" =>LED7 <="1001111" -"3" / 4Fhwhen "0100" =>LED7 <="1100110" -"4" / 66hwhen "0101" =>LED7 <="1101101" -"5" / 6Dhwhen "0110" =>LED7 <="1111101" -"6" / 7Dhwhen "0111" =>LED7 <="0000111" -"7" / 07hwhen "1000" =>LED7 <="1111111" -"8" / 7Fhwhen "1001" =>LED7 <="1101111" -"9" / 6Fhwhen "1010" =>LED7 <="1110111" -"A" / 77hwhen "1011" =>LED7 <="1111100" -"b" / 7Chwhen "1100" =>LED7 <="0111001" -"C" / 39hwhen "1101" =>LED7 <="1011110" -"d" / 5Ehwhen "1110" =>LED7 <="1111001" -"E" / 79hwhen "1111" =>LED7 <="1110001" -"F" / 71hwhen others =>LED7 <="0000000" -"不显示示"endcase; sn <= ds; -"位选信号 "end process;end behv;参考2、十进制计数器程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY cntA isport(CLK,RST,EN :in std_logic; Dout : out std_logic_VECTOR ( 3 Downto 0 ); Cy : out std_logic);end cntA ;architecture Cm of cntA isbeginProcess (CLK,RST,EN)Variable Cqi : std_logic_VECTOR ( 3 Downto 0 ); Begin If RST ='1' Then Cqi :=(Others =>'0'); Elsif CLK'Event and CLK='1' then If EN='1' then If Cqi < "1010" then Cqi :=Cqi; else Cqi :=(others =>'0'); end If; end If; end If; IF Cqi="1110" Then Cy <= '1' ; Dout <= "0000" else Cy <='0' Dout <= Cqi; end If; END Process;End Cm; 参考3、顶层原理图· 3 ·