基于vhdl的电子计时器的设计课程设计(编辑修改稿)内容摘要:

R(3 DOWNTO 0)。 qb: out STD_LOGIC_VECTOR(3 DOWNTO 0))。 END count24。 ARCHITECTURE a1 OF count24 IS BEGIN process(clk) variable tma: STD_LOGIC_VECTOR(3 DOWNTO 0)。 variable tmb: STD_LOGIC_VECTOR(3 DOWNTO 0)。 begin If Reset = 39。 039。 then tma:=0000。 tmb:=0000。 else if clk39。 event and clk=39。 139。 then if en=39。 139。 then 第 10 页 if tma=1001 then tma:=0000。 tmb:=tmb+1。 elsif tmb=0010 and tma=0011 then tma:=0000。 tmb:=0000。 else tma:=tma+1。 end if。 end if。 end if。 end if。 qa=tma。 qb=tmb。 end process。 END a1。 分频器模块 设计一个分频器,要求将输入 512HZ的时钟信号分频为 1HZ的时钟信号作为计时器的秒输入。 输入信号为 clk和 rst,分别为时钟信号和复位信号,输出信号为clk_out,为分频器 1HZ的时钟信号输出。 图 7 分频器示意图 该模块部分 VHDL 源程序如下 : LIBRARY IEEE。 USE。 USE。 ENTITY fenpinqi IS PORT (CLK,RST:in std_logic。 CLK_OUT:out std_logic)。 END fenpinqi。 ARCHITECTURE behav OF fenpinqi IS 第 11 页 signal clk_data:std_logic。 SIGNAL CNT6 : INTEGER := 0。 BEGIN PROCESS(CLK) BEGIN IF RST = 39。 039。 THEN CNT6=0。 ELSIF CLK39。 EVENT AND CLK=39。 139。 THEN IF CNT6=255 THEN clk_data=NOT clk_data。 CNT6=0。 ELSE CNT6=CNT6+1。 END IF。 END IF。 CLK_OUT=clk_data。 END PROCESS。 END behav; LED 显示模块 LED有着显示亮度高,响应速度快的特点,最常用的是七段式 LED显示器,又称数码管。 七段 LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。 LED数码管的 g~ a七个发光二极管因加正电压而发亮,因加零电压而不能发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码 (段码 ),如显示 ”0”,字形码为 3fh。 图 8 LED数码管结构图 第 12 页 数码管的接口有静态接口和动态接口。 动态接口采用各数码管 循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出 (字形选择 ),另一接口完成各数码管的轮流点亮 (数位选择 )。 将二十四进制计数器和 2 个六十进制计数器的输出作为 LED显示模块的输入,在时钟信号的控制下通过此模块完成 6 个 LED数码管的显示,输出信号为WEI[2…0] 和 LED[6…0] ,分别为位选信号和段码输出。 图 9 LED 显示示意图 该模块部分 VHDL 源程序如下 : LIBRARY IEEE。 USE。 USE。 ENTITY clock1 IS PORT(CLK: IN STD_LOGIC。 S1, S2, S3, S4, S5, S6: IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 WEI: OUT STD_LOGIC_VECTOR(2 DOWNTO 0)。 LED: OUT STD_LOGIC_VECTOR(6 DOWNTO 0))。 END ENTITY。 ARCHITECTURE behave OF clock1 IS SIGNAL CNT6 : INTEGER RANGE 0 TO 5 := 0。 SIGNAL SHUJU: STD_LOGIC_VECTOR(3 DOWNTO 0)。 第 13 页 BEGIN PRO1:PROCESS(CLK) BEGIN IF CLK39。 EVENT AND CLK = 39。 139。 THEN CNT6 = CNT6 + 1。 CASE CNT6 IS WHEN 0 = WEI = 000。 SHUJU = S1。 WHEN 1 = WEI = 001。 SHUJU = S2。 WHEN 2 = WEI = 010。 SHUJU = S3。 WHEN 3 = WEI = 011。 SHUJU = S4。 WHEN 4 = WEI = 100。 SHUJU = S5。 WHEN 5 = WEI = 101。 SHUJU = S6。 CNT6=0。 WHEN OTHERS = NULL。 END CASE。 END IF。 END PROCESS。 PRO2: PROCESS(SHUJU) BEGIN CASE SHUJU IS WHEN 0000 = LED= 1111110。 WHEN 0001 = LED= 0110000。 WHEN 0010 = LED= 1101101。 WHEN 0011 = LED= 1111001。 WHEN 0100 = LED= 0110011。 WHEN 0101 = LED= 1011011。 WHEN 0110 = LED= 1011111。 WHEN 0111 = LED= 1110000。 WHEN 1000 = LED= 1111111。 WHEN 1001 = LED= 1111011。 WHEN others= LED= 0000000。 END CASE。 END PROCESS。 END。 第 14 页 通过上面的分频器,两个 60 进制的计数器,一个 12/24 进制的计数器, 6选 1 扫描器, 7 段数码显示器,设计如图所示的顶层。 规定每一模块的功能和各模块之间的接口。 同时整个计数器有清零。 设计思想,利用脉冲时钟产生一个1Hz 的信号来实现一秒钟的控制,要产生 1Hz 的信号就要用到分频器,实验中用512 分频器把 512Hz 的信号变成 1Hz。 然后信号进入控制秒的计数器,当第 60个脉冲时钟到来时,产生一个进位信号, 送到控制分的计数器,同理,当第。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。