我是靠谱客的博主 细腻歌曲,最近开发中收集的这篇文章主要介绍FPGA Verilog字符串转数字,以及数字转字符串的方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在单片机C语言中,我们经常用/10,%10这样的方法将数字转换为字符串,反过来字符串转数字就用乘法:*10。
1829除以10,商182余9,得到个位数9。
182再除以10,商18余2,得到十位数2。
18除以10,商1余8,得到千位数1和百位数8。
但是这种方法并不适合于FPGA。因为乘法器和除法器都比较庞大,如果用在for循环里面,最后编译出来的电路会非常复杂,搞不好会把整个fpga的资源全部用完。
实际上,根本就不需要乘除法,我们只用加减法和移位就能搞定。
数字本质上就是二进制码,字符串本质上就是BCD码。
例如数字18是:00010010
而字符串"18"的十六进制形式是0x31 0x38
把左边的3去掉,剩下的就是1和8,合起来就是BCD码 0001 1000
我们要把字符串转换成数字,就是要将BCD码转换成二进制码(binary,也叫BIN码)。
把数字转换成字符串,就是把二进制码转换成BCD码,然后每个数位前面添上3(0011)就可以了
BIN和BCD之间的互相转换有专门的算法。
BIN转BCD:由加法和8次左移位组成
https://my.eng.utah.edu/~nmcdonal/Tutorials/BCDTutorial/BCDConversion.html
BCD转BIN:反过来,由减法和8次右移位组成
https://embeddedthoughts.com/2016/06/01/bcd-to-binary-conversion-on-an-fpga/
由于算法非常简单,我们可以在FPGA中用组合逻辑来实现,单个时钟周期就可以直接得出结果。
不需要乘法器和除法器。不需要多个时钟周期。

最后

以上就是细腻歌曲为你收集整理的FPGA Verilog字符串转数字,以及数字转字符串的方法的全部内容,希望文章能够帮你解决FPGA Verilog字符串转数字,以及数字转字符串的方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部