找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2522|回复: 0
收起左侧

用VHDL设计计数、译码显示电路 附源程序

[复制链接]
ID:556863 发表于 2020-11-16 20:24 | 显示全部楼层 |阅读模式
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) 。

  1. LIBRARY IEEE;
  2. USE IEEE.STD_LOGIC_1164.ALL;
  3. USE IEEE.STD_LOGIC_UNSIGNED.ALL;
  4. ENTITY lihao_015 IS
  5.     PORT (CLK,RST,EN : IN STD_LOGIC;                     
  6.                      CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);     
  7. COUT : OUT STD_LOGIC  );           
  8. END;
  9. ARCHITECTURE behav OF lihao_015 IS
  10. BEGIN
  11.    PROCESS(CLK, RST, EN)
  12.      VARIABLE  CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);
  13.    BEGIN
  14.       IF RST = '0' THEN   CQI := (OTHERS =>'0') ;  --计数器异步复位,低电平有效         
  15.        ELSIF CLK'EVENT AND CLK='1' THEN             --检测时钟上升沿
  16.         IF EN = '1' THEN                        --检测是否允许计数(同步使能)
  17.           IF CQI < 15 THEN   CQI := CQI + 1;          --允许计数, 检测是否小于15
  18.             ELSE    CQI := (OTHERS =>'0');            --大于15,计数值清零      
  19.           END IF;
  20.         END IF;
  21.       END IF;   
  22.        IF CQI = 15 THEN COUT <= '1';                --计数大于15,输出进位信号
  23.          ELSE    COUT <= '0';
  24.        END IF;
  25.          CQ <= CQI;       --将计数值向端口输出
  26.    END PROCESS;
  27. END;
复制代码

51hei.png

全部资料51hei下载地址:
jishuqi.zip (2.81 MB, 下载次数: 10)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表