7段数码管是电子开发过程中常用的输出显示设备,常用的BCD七段译码器如74系列的有7446、7447、7448、7449以及CD4511只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。7段译码器输出信号LED7S的7位分别接如图3.1数码管的7个段,高位在上,低位在下。例如当LED7S输出为“1101101”驱动共阴级数码管时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段发亮,于是数码管显示“5”。7段译码器的仿真波形如图3.2所示。注意,这里没有考虑表示小数点的发光管,如果要考虑,需要增加段h,例1中的LED7S:OUTSTD_LOGIC_VECTOR(6 DOWNTO 0)应改为…(7 DOWNTO 0) 。
- LIBRARY IEEE;
- USE IEEE.STD_LOGIC_1164.ALL;
- USE IEEE.STD_LOGIC_UNSIGNED.ALL;
- ENTITY lihao_015 IS
- PORT (CLK,RST,EN : IN STD_LOGIC;
- CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
- COUT : OUT STD_LOGIC );
- END;
- ARCHITECTURE behav OF lihao_015 IS
- BEGIN
- PROCESS(CLK, RST, EN)
- VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);
- BEGIN
- IF RST = '0' THEN CQI := (OTHERS =>'0') ; --计数器异步复位,低电平有效
- ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿
- IF EN = '1' THEN --检测是否允许计数(同步使能)
- IF CQI < 15 THEN CQI := CQI + 1; --允许计数, 检测是否小于15
- ELSE CQI := (OTHERS =>'0'); --大于15,计数值清零
- END IF;
- END IF;
- END IF;
- IF CQI = 15 THEN COUT <= '1'; --计数大于15,输出进位信号
- ELSE COUT <= '0';
- END IF;
- CQ <= CQI; --将计数值向端口输出
- END PROCESS;
- END;
复制代码
全部资料51hei下载地址:
jishuqi.zip
(2.81 MB, 下载次数: 10)
|