永发信息网

VHDL中除法使用错误。求指教

答案:3  悬赏:70  手机版
解决时间 2021-03-12 10:07
  • 提问者网友:做自己de王妃
  • 2021-03-12 07:02
VHDL中除法使用错误。求指教
vhdl语言的问题,用FPGA串口接受到一串数据,然后用这一串数据除以256,并将余数取出来。再用64除以这一个余数。
为什么会出错呢?原因好像是两端都要是实数。

下面程序中 h_pixel是串口接受的数据。some_level是常数256。
程序代码如下:
RTR_int:= h_pixel/some_level; --多少像素 一阶
RTR_rec:=h_pixel rem some_level; --余数

if RTR_rec>0 then
n_pixel:=some_level/RTR_rec; --余数中的,每多少像素补一个像素进去
。。。。。。
end if;

错误代码如下:
line 218: Operator must have constant operands or first operand must be power of 2

问题解决,加分50。蛮急的一个问题。
最佳答案
  • 五星知识达人网友:上分大魔王
  • 2021-03-12 08:24
串行输入数据,还要除以256,那么应该是存到一个多少位的寄存器吧,比如:
串行输入10位,存储寄存器为 [9:0] reg_in,它再除以256,(1_0000_0000),余数不就是剩下的低八位[7:0]位吗?
除法实现,不是可以先循环减法,然后比较,直到余数小于除数,减法的次数就是除法的商,最后的余数就是除法的余数。

仅供参考
全部回答
  • 1楼网友:像个废品
  • 2021-03-12 10:48
加法、减法和乘法运算符是可以综合成逻辑电路的,对于除法运算,只有在除数为2的n次幕时才有可能进行综合,此时除法操作对应的是将被除数向右进行n次移位。 再看看别人怎么说的。
  • 2楼网友:酒醒三更
  • 2021-03-12 09:43
Verilog不能这样用/实现除法,这样除出来的只有整数部分。可以下载个divide.v。 如果精度要求不高的话,可以将被除数先乘以一个相对大的数譬如1024再除。除完对商适当移位即可(2^10, 移10位)。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯