【FPGA零基础学习之旅#7】BCD计数器设计 您所在的位置:网站首页 8421码10010111 【FPGA零基础学习之旅#7】BCD计数器设计

【FPGA零基础学习之旅#7】BCD计数器设计

2023-06-10 00:31| 来源: 网络整理| 查看: 265

🎉欢迎来到FPGA专栏~BCD计数器设计

☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏📜 欢迎大家关注! ❤️ FPGQ2

CSDN

🎉 目录-BCD计数器设计 一、效果演示二、BCD码基础知识三、BCD计数器Verilog实现四、级联BCD计数器实现4.1 Verilog实现4.2 ip核实现

遇见未来

一、效果演示

顶层模块中的BCD模块级联: Verilog实现: 结果1 调用ip核实现: ip

当计数到12‘h999时,产生一个进位输出: 结果2

二、BCD码基础知识

BCD 码中最常用的是 8421 码,其各个 bit 权值分别是 8d、4d、2d、1d;同理 5421 码各位的权依次为 5d、4d、2d、1d。5421 码特点是最高位连续 5 个 0 后连续 5 个 1,故其当计数器采用这种编码时,最高位可产生对称方波输出;余 3 码是在 8421 码上加 0011b 得出来的;格雷码的特点是任意两个相邻的代码只有一位二进制数不同,编码格式不唯一;余 3 循环码具有格雷码的特点并且编码的首尾可以连接来进行循环,这样可用反馈移位寄存器来实现,硬件实现简单。

在实际使用中如不特指 BCD 码格式,则均为 8421 码。通过以上介绍将十进制 895 转换为BCD 码就是 1000_1001_0101,同理若将 BCD 码 1001_0110_0100 转换为十进制数即为 964。

BCD 码的主要应用之一就是数码管,假设要将十进制数 158 显示,一般解决办法是把需要显示的十进制数的个、十、百、千位数等进行拆分,即把 158 拆分出 1、5、8,然后查出对应的数码管显示段码再送去给数码管连接的 IO 口。这个过程可以进行下面的运算:先进行除法运算 158/100 得出百位 1,再取余 158%100 = 58 后继续进行除法运算 58 / 10 得出十位5,再进行一次取余 158%10 ,得到个位 8。以上过程可以看出需要除法,但是由于除法运算是比较消耗计算时间导致整体需要的指令周期太久。但是如果先将其转换为 BCD 码,则可大幅度减少运算时间。

三、BCD计数器Verilog实现

我们使用Verilog HDL实现一个BCD计数器。

一个BCD计数模块结构如下: 模块结构 其中,各端口信号的含义如下表所示:

端口信号I/O功能Clkinput50M系统时钟Rst_ninput全局复位Cininput进位输入信号Coutoutput进位输出信号qoutput计数值输出

对于计数过程,最大计数值设定为4‘d9:

//执行计数过程 always@(posedge Clk or negedge Rst_n)begin if(!Rst_n) cnt


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有