VHDL--计数显示电路.docxVIP

  • 52
  • 0
  • 约4.55千字
  • 约 6页
  • 2017-06-07 发布于重庆
  • 举报
VHDL--计数显示电路

实验二 计数显示电路 一 设计要求: 设计一个输出为3位BCD码的计数显示电路。该计数显示电路由三个模块构成: (1)十进制计数器(BCD_CNT) (2)七段显示译码器电路(DEC_LED) (3) 分时总线切换电路(SCAN)。 二 设计思路及原理: 根据逻辑图采用层次化的设计方法,电路原理如图所示。 图1电路原理图 长度为0~999的三位BCD码加法计数器,输出数据总线的宽度为12位。将12位二进制数据总线经过分时总线切换电路模块,分时后的4位8421BCD送到七段显示译码器电路,计数值译为对应的编码,并在LED数码管上显示出对应的十进制数。 LED数码管共有七个输入端(a~g),三个数码管采用扫描显示方法,按个位、十位、百位的次序依次显示12位二进制的低四位、中间四位和高四位。 图2是源程序的RTL级电路图。整个设计分十进制计数器模块(BCD_CNT)、分时总线切换电路模块(SCAN)和七段显示译码器电路模块(DEC_LED)构成。总的输入为十进制计数器时钟clk,异步复位清零信号reset,分时总线切换电路时钟CL。在reset信号为0期间,在每个clk的上升沿计数器将加1。在每个cl的上升沿将会改变对三个数码管的扫描选通。总的输出为数码管选通信号sel(三位),输出到七段数码管的数据信号ledout(七位)。 图2 为了检验系统的正确与否,这里还添加了四个输出:十进制计数器输出c1(四位)、c2(四位)、c3(四位),分时总线切换电路一个输出q(四位),它是对计数器输出c1、c2、c3进行分时输出。分时选通个、十、百位的数码管并将相应要显示的数据输出到七段显示译码器电路(DEC_LED),由此实现数码管的动态扫描显示。 三 实验步骤及 VHDL源代码: (1)十进制计数器电路(BCD_CNT)模块: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity BCD_CNT is port(clk,reset:in std_logic; c1,c2,c3:out std_logic_vector(3 downto 0)); end BCD_CNT; architecture cnt of BCD_CNT is signal cn1,cn2,cn3:std_logic_vector(3 downto 0); begin cnt1:process(clk,reset) begin if(reset=1) then cn1=0000; elsif(clkevent and clk=1) then if(cn19) then cn1=cn1+1; else cn1=0000; end if; end if; end process cnt1; c1=cn1; cnt2:process(cn1(3),reset) begin if(reset=1) then cn2=0000; elsif(cn1(3)event and cn1(3)=0) then if(cn29) then cn2=cn2+1; else cn2=0000; end if; end if; end process cnt2; c2=cn2; cnt3:process(cn2(3),reset) begin if(reset=1) then cn3=0000; elsif(cn2(3)event and cn2(3)=0) then if(cn39) then cn3=cn3+1; else cn3=0000; end if; end if; end process cnt3; c3=cn3; end cnt; (2)分

文档评论(0)

1亿VIP精品文档

相关文档