概述
本案例:明德扬首创全新FPGA设计技巧--至简设计法,教你如何一步一步去完成一个复杂电路的设计,里面很多有实用技巧,熟练运用这些技巧,有助于你写出非常优秀的FPGA设计代码。非常简洁易读,欢迎比较。
一、功能描述
在无线通信的信号处理中,常常要用到多位数字量的加法运算,但串行加法器速度较慢,并行加法器则能满足要求,且结构不复杂,但在使用了并行加法器后,仍然只有在输出稳定后才能输入新的数据进行下一次计算,即计算的节拍必须大于运算电路的延迟;此外,许多门级电路和布线的延迟会随着位数的增加而累加,因此加法器的频率还是受到了限制。所以采用流水线,就有可能将一个算术操作分解为一些小规模的基本操作,将进位和中间值储存在寄存器中,并在下一个时钟周期内继续运算,这样就可以提高电路的利用效率。将流水线规则应用于FPGA中,只需要很少或者根本不需要额外的成本。
本案例实现16位2级流水灯的功能。
二、平台效果图
仿真效果图
三、实现过程
输入输出信号列表如下:
信号名 | I/O | 位宽 | 说明 |
clk | I | 1 | 系统工作时钟50M |
rst_n | I | 1 | 系统复位信号,低电平有效 |
vld_in | I | 2 | 输入有效指示信号 |
a | I | 16 | 数据a |
b | I | 16 | 数据b |
cin | I | 1 | 输入进位 |
sum | O | 16 | 和 |
cout | O | 1 | 输出进位 |
vld_out | O | 1 | 输出有效指示信号 |
首先将输入信号的低八位与进位进行相加{cout1,sum1} <= {1'b0,a[7:0]} + {1'b0,b[7:0]} + cin;
并存入寄存器中,然后将高八位放入寄存器在下一个时钟进行相加并与低八位进行合并
{cout,sum} <= {({1'b0,a_ff0[7:0]} + {1'b0,b_ff0[7:0]} + cout1),sum1};以此实现了16位2级流水灯加法器的功能。
代码资料下载:http://pan.baidu.com/s/1slhMSfb
最后
以上就是傻傻电灯胆为你收集整理的16位2级流水灯加法器的全部内容,希望文章能够帮你解决16位2级流水灯加法器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复