明德扬至简设计法设计的16位复数乘法器,比一般乘法器更加节省乘法器资源。
本案例节选明德扬fpga培训班中的练习,代码简洁,欢迎比较学习。潘老师基于至简设计法的案例,绝不是世面上乱七八糟的代码,我们的代码简 单清晰,一步一步设计,是让你学习FPGA的最佳选择。
一、功能描述
在FPGA中乘法器占用的资源比较多,所以为了想办法尽可能减少这一资源,本案例采用了三个实数乘法器完成四个实数乘法器才能完成的复数乘法。
本案例实现16位复数乘法器的功能。
二、平台效果图
仿真效果图
三、实现过程
输入输出信号列表如下:
信号名 | I/O | 位宽 | 说明 |
clk | I | 1 | 系统工作时钟50M |
rst_n | I | 1 | 系统复位信号,低电平有效 |
vld_in | I | 2 | 输入有效指示信号 |
ar | I | 16 | 输入数据ar |
ai | I | 16 | 输入数据ai |
br | I | 16 | 输入数据br |
bi | I | 16 | 输入数据bi |
qr | O | 32 | 输出数据qr |
qi | O | 32 | 输出数据qi |
vld_out | O | 1 | 输出有效指示信号 |
有复数p、a和b,且p=ab,有:
p=pr+pi=ab=(ar+ai)(br+bi)
其中:
pr=arbr-aibi=ar(br+bi)-(ar+ai)bi
pi=arbi+aibr=ar(br+bi)+(ai-ar)br
以此通过增加加法,节省了一个乘法器,实现了节省乘法器的16位复数乘法。
代码资料下载:http://pan.baidu.com/s/1eS1hGFS