新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于FPGA的可逆数制转码器设计

基于FPGA的可逆数制转码器设计

作者: 时间:2013-03-05 来源:网络 收藏

摘要:针对二-十进制(BCD)数据相互转换的实现目标,基于模块层次化的设计思想,提出了一种高效、易于重构的可逆器设计方案。并在(Altera DE2)开发板上成功进行了12 b可逆器的设计验证,实验结果表明该器通过端口参数配置就可以完全实现不同位数的二-十进制(BCD)数据间的相互转换。
关键词:二-十进制(BCD);可逆转码器;;逻辑单元;TPD

0 引言
在数字系统的数据输入、运算、输出过程中,输入和输出常用十进制形式表达;而在系统内部采用二进制表示和处理数据则更为方便,因此在二进制和十进制数据间的转换就是非常必要的。此外,数控机床、智能仪表、电子秤和数码管等显示设备也会频繁地用到十进制(BCD)码与二进制(BIN)码的相互转换。目前,数字系统中BCD码和BIN码的相互转换有3类实现方法,首先是采用软件算法的实现方式,传统的是用DAA调节指令实现,但效率较低,不能满足一些实时应用的要求。其次是纯硬件运算实现方式,这种实现方式是数据转换运算到硬件的直接映射,常采用逻辑运算和数据移位来实现数据转换,转换效率较高,可以根据输入数据位宽进行转换器的位数扩展和重构。但是在转换数据位数较多时,运算量会显著增加、硬件实现代价也较大、路径延迟也会增大、整个转换器的时序控制也会变的比较复杂,也很难做到可逆转码运算。最后是基于数据查找表(Look Up Tabie,LUT)的实现方式,也就是先把全部或部分转换数据列表存储在存储器中,然后再根据转码器的输入数据(地址码)直接或间接地从存储器中取出所需的输出数据,这种以查找表为核心的转换器运算速度快、算法直接简单;但是会需要大量的存储器;并且这种实现方法往往是针对具体的转换数据位宽和单一转换方向来定制存储器(ROM)容量和存储器初始化数据;一旦需要转换的数据位数和方向发生变化,就根本无法实现转换器的数据位数扩展和结构重构,所有的设计就必须重新开始。
基于FPGA的可逆转码器设计,充分利用FPGA的结构特点和硬件描述语言(Veilog HDL)的抽象和灵活性;二-十进制(BCD)转码器不但具有可配置双向转换数据的功能,而且还要求转码器简单、高效和易于位数扩展(模块化重构)。因此,文中就提出了一个高效、易于重构的二-十进制(BCD)可逆转码器设计方案,通过端口参数配置和模块重构就能实现不同位数的数据在二进制和十进制(BCD)之间相互转换,最后
在FPGA(DE2)开发板上成功地进行了设计验证。

1 的转换算法
假设X=(xn-1,xn-2,…,x0)p表示n位p进制数据,Y=(ym-1,ym-2,…,y0)q表示m位q进制数据,二者之间等值变换的条件为:
a.JPG
这里,X,Y所表示的数值范围分别是[0,pn-1]和[0,qm-1]。而在二进制编码体系下,要把一个n位p进制数据转换为m位的q进制数据就要求输入输出的数据位宽必须满足m=Ceil[n·logqp]=[n·logqp],这里用“∏”表示整数上确界Ceil运算,输入输出数据位宽关系如图1所示。

本文引用地址://www.cghlg.com/article/189669.htm

b.JPG


图1中的din=Ceil[log2 p]=[log2 p];dout=Ceil[log2 q]=[log2 q]分别表示1位输入输出数据的二进制位宽,例如1位的八进制数据需要3 b二进制数表示;而1位的十进制数据需要4 b二进制数表示,所以X→Y转化的输入、输出数据位宽(单位:b)分别为:
n·din=n·[log2 p] (2)
m·dout=[n·logq p]·[log2 q] (3)
8421BCD码是使用4 b二进制数表示1位10进制数(0~9)。如果把n位二进制数据转换成m位BCD码(4m位)就要求m位BCD码所能表示的最大数不小于n位二进制码所表示最大数,即10m-1≥2n-1,m≥Ceil[lg 2n]=『n·lg 2]。如果12位的二进制数转换成十进制(BCD),根据式(3)算出输出m位的十进制数据m=[n·logq p]=[12·lg2]=4;输出数据位宽m·dout=m·[log2 q]=16 b。

2 二-十进制可逆转码器设计
2.1 可逆转码器的层次化设计
在片上数字系统(SOPC)中实现二-十进制(BCD)码转换器,就要求设计者充分利用硬件(FPGA)的结构特点和硬件描述语言(HDL)所提供的设计灵活性;更好地实现转码器的简单、高效和结构易于扩展。为此,针对FPGA的结构特点提出了以下设计思路:以4 b数据转换作为基本的可逆转换单元来适应FPGA结构特点,而提高逻辑单元利用率、达到降低硬件代价的目的;利用Verilog HDL进行层次化设计描述,以4 b数据转换单元为最底层模块,构造出更大的5 b和6 b可逆转换单元(模块),这样会在不增加实现代价的前提下,实现使用大的转码单元模块来简化转码器的结构、方便转码器的位数扩展;这种设计方法就为二-十进制(BCD)可逆转码器的构建提供了4 b,5 b和6 b三种不同大小的单元模块,这会让每一个转换单元模块都使用到恰到好处(需要小模块的地方就不会使用大模块);有效避免了单元模块利用率不高的问题。


上一页 1 2 3 下一页

关键词: FPGA 数制 转码

评论


相关推荐

技术专区

关闭