[Verilog HDL] 求助VHDL中的运算

[复制链接]
 楼主| shbguo 发表于 2007-2-1 21:45 | 显示全部楼层 |阅读模式
大侠,您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我是一个大学生,电子专业,我对FPGA很感兴趣,现在用VHDL进行编写一些小的逻辑功能程序,可是,最近我要编写一个带有算法的程序,而且还是小数和负数的运算,我不知道该怎么办.<br />&nbsp;&nbsp;&nbsp;&nbsp;下面简单说明一下我要实现的功能:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;din1:&nbsp;in&nbsp;&nbsp;&nbsp;std_logic_vector(7&nbsp;downto&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;din2:&nbsp;in&nbsp;&nbsp;&nbsp;std_logic_vector(9&nbsp;downto&nbsp;0);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;led:&nbsp;out&nbsp;&nbsp;&nbsp;std_logic_vector(1&nbsp;downto&nbsp;0);&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constant&nbsp;:x=&nbsp;-10.078812453;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constant&nbsp;:y=&nbsp;3.80764200637;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A=x*din1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B=y*din2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(A+B)&nbsp;&lt-1024&nbsp;then&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;led&lt=&quot;00&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elsif&nbsp;(A+B)&nbsp;&lt0&nbsp;then&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;led&lt=&quot;01&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elsif&nbsp;(A+B)&nbsp;&lt512&nbsp;then&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;led&lt=&quot;10&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;led&lt=&quot;11&quot;;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;<br />以上是功能描述,不是原代码,<br />其中din1和din2是外部输入的数据,led是输出指示灯.<br />在VHDL中不支持小数和实数,那怎么进行运算呢?<br /><br />非常感谢,
Allen_Lu 发表于 2007-2-2 17:07 | 显示全部楼层

re

一般综合软件的综合支持以2为系数的乘除运算(就是左移右移),可以尝试以这种方式分解下乘法的系数
feele 发表于 2007-2-8 13:46 | 显示全部楼层

re

负数和小数必须表示成二进制浮点数&nbsp;(格式看明白就没问题了)<br /><br />然后参考浮点数做四则运算的快速方法(以二进制为基础)就可以了吧?然后用VHDL写出来&nbsp;。这方面有很多**&nbsp;比方说开根号之类。。<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

8

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部