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中用组合逻辑来实现,单个时钟周期就可以直接得出结果。
不需要乘法器和除法器。不需要多个时钟周期。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
FPGA(现场可编程门阵列)是一种集成电路芯片,可根据需要重新配置其内部的数字逻辑电路。串口是一种用于在计算机和外部设备之间传输数据的通信接口。 要实现FPGA串口接收字符串,需要以下步骤: 1. 接口电路设计:首先,需要设计一个串口接口电路,将外部串口信号与FPGA内部逻辑连接起来。将串口的RX(接收)信号连接到FPGA的一个输入引脚。 2. 串口收发协议:使用标准的串口收发协议,例如UART(通用异步收发传输协议),设置合适的波特率、数据位、停止位和校验位等参数。 3. 编程实现:根据FPGA芯片厂商提供的开发工具和语言,编写相应的代码来接收串口数据。一般使用HDL(硬件描述语言)编程,如VHDL或Verilog。 4. 数据接收处理:设计FPGA内部的逻辑电路,解析串口接收到的数据。根据串口协议,数据是以字节为单位接收的,因此FPGA需要根据协议将接收到的字节逐个拼接成字符串。 5. 存储和使用:将接收到的字符串存储在FPGA内部的寄存器或存储器中,以便后续处理或显示。可以使用UART接口进行实时调试,将FPGA接收到的字符串通过串口发送到计算机上。 总之,FPGA串口接收字符串的过程包括接口电路设计、串口协议设置、编程实现、数据接收处理和数据存储等步骤。通过合理设计和编程,FPGA可以实现可靠的字符串接收功能,适用于各种串口通信的应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巨大八爪鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值