0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在FPGA开发板实现二-十进制转码器设计

电子设计 作者:电子设计 2018-10-07 12:07 次阅读

为了实现测量数据的实时显示,电子测量系统常用到二-十进制(BCD)转码器来完成数据的实时转换。目前,电子系统中的二-十进制(BCD)数制转换有三类实现方法,一是采用软件算法的实现方式,传统的方法是用DAA调节指令实现,但效率较低;其次是纯硬件运算实现方式,这种实现方式从数据转换运算到硬件的直接映射,常采用逻辑运算和数据移位来实现数据转换,转换效率较高,但是在转换数据位数较多时,运算量会显著增加,硬件实现代价也较大;三是基于数据查找表LUT(Lookup Table)的实现方式。

本文提出了一个高效、易于重构的二-十进制(BCD)转码器设计方案,并在FPGA开发板上成功地进行了设计验证。

1 二-十进制(BCD)码的转换算法

在FPGA开发板实现二-十进制转码器设计

在FPGA开发板实现二-十进制转码器设计

从以上的二-十进制(BCD)码变换算法中可以看到,二进制数据的最低位b1不需要转换而直接输出,而且每个转换运算单元的低3位输出数据始终不会大于(4)D/(100)B,这样就能够保证最后得到的每一位BCD码不会大于(9)D/(1001)B,从而得到BCD码的正确转换输出。

2 二-十进制(BCD)转码器的实现

2.1 二-十进制(BCD)转码器的ASIC实现

首先,构造出5 bit二进制数的转换单元,然后再以此转换单元为基本单位扩展成其他的多位二-十进制(BCD)转码器,TI公司的SN74185A芯片就是这样的一个5 bit数据转换单元,用它实现的10 bit二-十进制(BCD)码转换器如图2所示。

在FPGA开发板实现二-十进制转码器设计

图2所示的转码器与图1的结构区别在于采用了5 bit的转换单元而不是4 bit的基本单元(高3 bit转换单元的最高位输入接地),从而简化了多位转码器的电路结构。每个转换单元(SN74185A)的6个输出位权依次是(20、10、5、4、2、1),因此也保证了每个转换运算单元的低3位输出数据始终不会大于(4)D/(100)B,使最后得到的每位BCD码都不会大于(9)D/(1001)B。使用时要求转换单元(SN74185A)的无用输入端作接地处理。假如需要转换的10 bit数据是(1110011011)B,每个转换模块完成输入二进制数据的位权转换,如图2所示,经过第一层数据转换后得到(10101111011),再依次经过后面第2层至第4层的数据转换,得到各层次相应转换输出分别是:(10111000011)、(100011000011)、(0100100100011),第4层的转换输出就是十进制(BCD)码:(0100100100011)BCD=(923)D。

2.2 基于FPGA的二-十进制(BCD)转码器设计

在片上数字系统(SOPC)中实现二-十进制(BCD)码转换器,如果直接依据图2所示的结构,使用SN74185A芯片的IP核(Quartus II工具提供)来实现转码器不但存在着2.1中所述的不足之处,而且还会面临着更大的硬件资源浪费问题,这是由于FPGA中的逻辑单元(LEs)都是基于4输入的数据查找表(LUT),如果要实现5输入的转换单元(SN74185A),就需要查找表级联扩展,从而会造成路径延迟进一步增大、逻辑单元利用率降低、硬件实现代价提高。

为了克服以上的转码器设计缺陷,针对FPGA的结构特点,提出了以下设计思路:(1)以4 bit数据转换作为基本的转换单元来适应FPGA结构特点,而提高逻辑单元利用率,达到降低硬件代价的目的;(2)利用Verilog HDL层次化设计描述的灵活性,以4 bit数据转换单元为最底层模块,构造出更大的5 bit和6 bit转换单元(模块)。这种设计方法为二-十进制(BCD)转码器的构建提供了4 bit、5 bit和6 bit三种不同大小的单元模块,可使每一个转换单元模块的使用恰到好处(需要小模块的地方就不会使用大模块)。

2.2.1 二-十进制(BCD)转码器单元模块设计

采用上文所述基于FPGA的二-十进制(BCD)转码器设计方案,关键在于要做好最底层模块(4 bit转码模块)的优化设计,对4 bit转码模块的不同Verilog HDL描述方式也会带来不同的实现代价;本文使用结构描述实现4 bit转码模块(Bin2Bcd_4),再通过4 bit转码模块层次实例化构成5 bit转码模块(Bin2Bcd_5)和6 bit转码模块(Bin2Bcd_6)的设计,4 bit、5 bit和6 bit三种单元模块的构造示意图如图3所示。

在FPGA开发板实现二-十进制转码器设计

2.2.2 基于混合模块的二-十进制(BCD)转码器设计

根据二-十进制(BCD)转码算法,使用上文2.2.1中得到的4 bit、5 bit和6 bit三种二-十进制转码单元模块,构造出7 bit、10 bit和12 bit二-十进制(BCD)转码器结构,如图4所示,转码单元模块的多余输入端接地,多余输出端悬空。

3 二-十进制(BCD)转码器的设计验证

本文使用Quartus II 6.0(Full Version)开发工具,对于图4所示的3个混合模块构建的二-十进制(BCD)转码器,在Altera公司的FPGA(Altera EP1K30QC208-2)芯片上分别进行了设计验证,验证结果完全达到设计预期。其中12 bit二-十进制(BCD)转码器的功能仿真和时序仿真结果如图5所示。

在FPGA开发板实现二-十进制转码器设计

在FPGA开发板实现二-十进制转码器设计

在完全相同的软硬件验证环境下,把图4所示的转码器设计和使用中规模集成电路IP核(SN74185A)实现的7 bit、10 bit和12 bit的转码器进行了性能对比,验证结果进一步表明了这种采用混合模块构建二-十进制(BCD)转码器的行之有效性;表1所示为采用这两种构建方法得到的7 bit、10 bit和12 bit转码器的验证结果对比。

在FPGA开发板实现二-十进制转码器设计

Altera EP1K30QC208-2(FPGA)芯片上的7 bit、10 bit和12 bit转码器设计验证结果和使用IP核(SN74185A)实现的转码器验证结果对比更加充分证明了这种设计思路的可行性;这种高效、易于重构的二-十进制(BCD)转码器设计为基于FPGA的片上数字测量系统实现做出了有意义的积极探索。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21620

    浏览量

    601174
  • 芯片
    +关注

    关注

    452

    文章

    50185

    浏览量

    420689
  • BCD
    BCD
    +关注

    关注

    1

    文章

    85

    浏览量

    29644
收藏 人收藏

    评论

    相关推荐

    FPGA学习系列:32. 如何实现二进制十进制的设计

    设计背景: 二进制十进制设计应用中分的广泛。尤其AD转化中是必须所用到的一个小知识点,学习二进制
    的头像 发表于 09-20 09:38 1.6w次阅读
    <b class='flag-5'>FPGA</b>学习系列:32. 如何<b class='flag-5'>实现</b><b class='flag-5'>二进制</b>转<b class='flag-5'>十进制</b>的设计

    labview2010中,怎么把十进制二进制,求大神!!!!

    创建前面板,该前面板有8个led指示和一个8位无符号十进制整数的垂直滑动条控件。显示滑动条带有数字指示,确保led均匀分布并且排列底部。要求
    发表于 09-19 10:06

    十进制计数

    十进制计数 二进制计数器具有电路结构简单、运算方便等特点,但是日常生活中我们所接触的大部分都是十进制数,特别是当二进制数的位数较多时,阅
    发表于 06-20 13:46 4996次阅读

    十进制二进制之间的转换

    十进制二进制之间的转换   既然一个数可以用二进制十进制两种不同形式来表示,那么两着之间就必然有一定的转换关系。  由十进制数的一
    发表于 04-06 23:53 8482次阅读
    <b class='flag-5'>十进制</b>和<b class='flag-5'>二进制</b>之间的转换

    十进制8421码一二~十进制2421码变换电路

    十进制8421码一二~十进制2421码变换电路
    发表于 04-10 10:06 4916次阅读
    <b class='flag-5'>二</b>~<b class='flag-5'>十进制</b>8421码一二~<b class='flag-5'>十进制</b>2421码变换电路

    十进制码变换电路

    十进制码变换电路
    发表于 04-10 10:07 1164次阅读
    <b class='flag-5'>二</b>~<b class='flag-5'>十进制</b>码变换电路

    七段一十进制十进制码变换

    七段一十进制十进制码变换
    发表于 04-10 10:10 498次阅读
    七段一<b class='flag-5'>十进制</b>或<b class='flag-5'>二</b>~<b class='flag-5'>十进制</b>码变换<b class='flag-5'>器</b>

    驱动CMOS器件的十进制一二~十进制变换

    驱动CMOS器件的十进制一二~十进制变换
    发表于 04-10 10:10 480次阅读
    驱动CMOS器件的<b class='flag-5'>十进制</b>一二~<b class='flag-5'>十进制</b>变换<b class='flag-5'>器</b>

    消除了开关反跳干扰的十进制一二~十进制变换

    消除了开关反跳干扰的十进制一二~十进制变换
    发表于 04-10 10:11 637次阅读
    消除了开关反跳干扰的<b class='flag-5'>十进制</b>一二~<b class='flag-5'>十进制</b>变换<b class='flag-5'>器</b>

    十进制计数,十进制计数原理是什么?

    十进制计数,十进制计数原理是什么? 二进制计数器具有电路结构简单、运算方便等特点,但是日常生活中我们所接触的大部分都是
    发表于 03-08 13:19 2.5w次阅读

    十进制加法器,十进制加法器工作原理是什么?

    十进制加法器,十进制加法器工作原理是什么?   十进制加法器可由BCD码(十进制码)来设计,它可以
    发表于 04-13 10:58 1.4w次阅读

    十进制数的二进制编码

    十进制数的二进制编码     人机交互过程中,为了既满足系统中使用二进制数的要求,又适应人们使用十进制
    发表于 05-02 19:04 9683次阅读

    二进制十进制数对照显示实验,十进制二进制对照

    计数脉冲,分别输出到二进制计数CD4040和一个十进制计数如CD40110、CD4033,从而得到一个任意数字的二进制
    的头像 发表于 09-20 18:26 2760次阅读

    二进制编码的十进制表示转换解码

    二进制编码小数的主要优点是它允许decimal(base-10)和binary(base-2)表单之间轻松转换。但是,缺点是BCD代码是浪费的,因为不使用 1010 (十进制10)和 1111 (
    的头像 发表于 06-24 09:31 1.4w次阅读
    <b class='flag-5'>二进制</b>编码的<b class='flag-5'>十进制</b>表示转换解码<b class='flag-5'>器</b>

    基于FPGA十进制计数

    本方案是一个基于 FPGA  的十进制计数。共阳极 7 段显示上的 0 到 9 十进制计数
    发表于 12-20 14:52 2次下载