BCD译码的实现_移位加3算法
0赞
发表于 2017/4/18 11:14:31
阅读(1780)
本案例:明德扬首创全新FPGA设计技巧--至简设计法,教你如何一步一步去完成一个复杂电路的设计,里面很多有实用技巧,熟练运用这些技巧,有助于你写出非常优秀的FPGA设计代码。非常简洁易读,欢迎比较。
BCD译码是指将二进制数,转换成BCD格式。如当cnt_s值为10时,也就是8’b00001010,转换成个位值为4’b0000,十位值为4’b0001。这个转换过程就是BCD译码。
此处介绍二进制转BCD码的硬件实现,采用左移加3的算法,具体描述如下:(此处以8-bit 二进制码为例)
1、左移要转换的二进制码1位
2、左移之后,BCD码分别置于百位、十位、个位
3、如果移位后所在的BCD码列大于或等于5,则对该值加3
4、继续左移的过程直至全部移位完成
举例:将十六进制码0xFF转换成BCD码
本模块的信号列表如下:
信号名 | I/O | 位宽 | 说明 |
rst_n | I | 1 | 系统复位信号,低电平有效 |
clk | I | 1 | 系统工作时钟50M |
din | I | 32 | 输入要译码的数据 |
din_vld | I | 1 | 输入数据有效指示信号 |
dout | O | 12 | 输出的BCD数据,共12比特,每4比特一组,分别表示百、十、个位的值 |
dout_vld | O | 1 | 输出数据有效指示信号 |