常用数字处理算法的Verilog实现.doc

常用数字处理算法的Verilog实现.doc

ID:55582530

大小:383.50 KB

页数:18页

时间:2020-05-18

常用数字处理算法的Verilog实现.doc_第1页
常用数字处理算法的Verilog实现.doc_第2页
常用数字处理算法的Verilog实现.doc_第3页
常用数字处理算法的Verilog实现.doc_第4页
常用数字处理算法的Verilog实现.doc_第5页
资源描述:

《常用数字处理算法的Verilog实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、常用数字处理算法的Verilog实现1.加法器的Verilog实现·串行加法器组合逻辑的加法器可以利用真值表,通过与门和非门简单地实现。假设和表示两个加数,表示和,表示来自低位的进位,表示向高位的进位。每个全加器都执行如下的逻辑表达式: 这样可以得到加法器的一种串行结构。因此,式(2.1)所示的加法器也被称为串行加法器。如图2-20给出了一个4位串行加法器的结构示意图。 图2-20串行加法器的结构示意图在无线通信的信号处理中,常常要用到多位数字量的加法运算。如果用串行加法器实现,速度较慢,而并行加法器就能满足要求,并且结构并不复杂。现在普遍使用的并性加法器是超前进位加

2、法器,只是在几个全加器的基础上增加了一个超前进位形成逻辑,以减少由于逐步进位信号的传递所造成的时延。图2-21给出了一个4位并行加法器的结构示意图。图2-21串行加法器的示意图在4位并行加法器的基础上,可以递推出16位、32位和64位的快速并行加法器。·流水线加法器在使用了并行加法器后,仍旧只有在输出稳定后才能输入新的数进行下一次计算,即计算的节拍必须大于运算电路的延迟;此外,许多门级电路和布线的延迟会随着位数的增加而累加,因此加法器的频率还是受到了限制。但如果采用流水线,就有可能将一个算术操作分解为一些小规模的基本操作,将进位和中间值存储在寄存器中,并在下一个时钟周

3、期内继续运算,这样就可以提高电路的利用效率。将流水线规则应用于FPGA中,只需要很少或根本不需要额外的成本。这是因为每个逻辑单元都包含两个触发器,大多数情况下这两个触发器或者没有用到,或者用于存储布线资源,那么就可以利用其来实现流水线结构。如果采用了流水线后,加法器的速度仍然不能满足需要的话,可以采用第3章中将会提到的串并转换来进一步提高计算的并行度。   由于一个slice中有两个触发器,还需要有1个触发器来作为进位输出,那么采用级流水线,就可以构造一个最大位数为位的加法器。 下面给出一个16位流水线加法器的代码。例2-2416位2级流水线加法器的Verilog设计

4、 moduleadder16_2(cout,sum,clk,cina,cinb,cin);         input[15:0]cina,cinb;         inputclk,cin;         output[15:0]sum;         outputcout;         regcout;         regcout1;         reg[7:0]sum1;         reg[15:0]sum;         always@(posedgeclk)begin//低8位相加; {cout1,sum1}={cina[7],ci

5、na[7:0]}+{cinb[7],cinb[7:0]}+cin;         end  always@(posedgeclk)begin//高8位相加,并连成16位 {cout,sum}={{cina[15],cina[15:8]}+{cinb[15],cinb[15:8]}+cout1,sum1};         end endmodule 上述程序经过synplifyPro综合后,得到如图2-22所示的RTL级结构图。2-2216位加法器的RTL结构图在ModelSim6.2b中完成仿真,其结果如图2-23所示,正确地实现了16比特加法。图2-2316位加

6、法器的RTL结构图2.乘法器的Verilog实现·串行乘法器两个N位二进制数x、y的乘积,最简单的方法就是利用移位操作来实现,用公式可以表示为:                                                                                                      (2.3)这样输入量随着k的位置连续地变化,然后累加 。 例2-25用Verilog实现一个8位串行乘法器 moduleade(clk,x,y,p); inputclk; input[7:0]x,y; output[15:0]

7、p; reg[15:0]p;  parameters0=0,s1=1,s2=2; reg[2:0]count; reg[1:0]state; reg[15:0]p1,t;//比特位加倍 reg[7:0]y_reg; always@(posedgeclk)begin   case(state)        s0:begin//初始化         y_reg<=y;              state<=s1;              count=0;             p1<=0;           t<={{8{x[7]}},x};

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。