实验五、16位乘法器芯片设计.pdf

实验五、16位乘法器芯片设计.pdf

ID:53006170

大小:147.72 KB

页数:7页

时间:2020-04-11

实验五、16位乘法器芯片设计.pdf_第1页
实验五、16位乘法器芯片设计.pdf_第2页
实验五、16位乘法器芯片设计.pdf_第3页
实验五、16位乘法器芯片设计.pdf_第4页
实验五、16位乘法器芯片设计.pdf_第5页
资源描述:

《实验五、16位乘法器芯片设计.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、BJ-EPM240V2学习板实验说明16位乘法器芯片设计乘法器是众多数字系统中的基本模块。从原理上说它属于组合逻辑范畴;但从工程实际设计上来说,它往往会利用时序逻辑设计的方法来实现,属于时序逻辑范畴。通过这个实验使大家能够掌握利用FPGA/CPLD设计乘法器的思想,并且能够将我们设计的乘法器应用到实际工程中。下面我们分别列举了十进制乘法运算和二进制乘法运算的例子。下面这种计算乘法的方式是大家非常熟悉的:乘积项与乘数相应位对齐(即将乘积项左移),加法运算的数据宽度与被乘数的数据位宽相同。下面例子中的被乘数和乘数都是无符号的整

2、数,对于有符号数的乘法,可以将符号与数据绝对值分开处理,即绝对值相乘,符号异或。乘法器的设计方法有两种:组合逻辑设计方法和时序逻辑设计方法。采用组合逻辑设计方法,电路事先将所有的乘积项全部计算出来,最后加法运算。采用时序逻辑设计方法,电路将部分已经得到的乘积结果右移,然后与乘积项相加并保存和值,反复迭代上述步骤直到计算出最终乘积。在本次实验中我们就利用时序逻辑设计方法来设计一个16位乘法器,既然是利用时序逻辑设计方法那么我们就得利用时钟信号控制乘法器运算,那么这样用时序逻辑设计方法与用组合逻辑设计方法比较,它有什么好处呢?

3、利用时序逻辑设计方法可以使整体设计具备流水线结构的特征,能适用在实际工程设计中。IO口定义:clk:芯片的时钟信号。rst_n:低电平复位、清零信号。定义为0表示芯片复位;定义为1表示复位信号无效。start:芯片使能信号。定义为0表示信号无效;定义为1表示芯片读入输入管脚得乘数和被乘数,并将乘积复位清零。ain:输入a(被乘数),其数据位宽为16bit.bin:输入b(乘数),其数据位宽为16bit.1BJ-EPM240V2学习板实验说明yout:乘积输出,其数据位宽为32bit.done:芯片输出标志信号。定义为1表示

4、乘法运算完成,yout端口的数据稳定,得到最终的乘积;定义为0表示乘法运算未完成,yout端口的数据不稳定。数据吞吐量的计算:数据吞吐量使指芯片在一定时钟频率条件下所能处理的有效数据量。假设本实验设计的芯片时钟频率可达300MHz,那么该芯片的数据吞吐量是多少呢?由于芯片完成一次乘法运算需要1个以上的时钟周期,因此,即使芯片采用300MHz的时钟频率,它每秒钟所能处理的有效数据吞吐量也一定小于300M。对于16位乘法器而言,ain和bin均为0xFFFF时,芯片的运算量最大,计算所需的时间也最长,这种情况才能作为我们计算数

5、据吞吐量的依据。假设芯片在200MHz的条件下ain和bin均为0xFFFF时需要16个时钟周期才能得到乘法结果,那么芯片在200MHz的条件下的数据吞吐量就为:200M/16=12.5M。仿真波形:完成一个256×16928=4333568的运算,约16个时钟周期以后done置高,表示运算结束,结果输出。16bitX16bit无符号数乘法程序:(说明:start信号置位期间,ain和bin必须保持稳定,如果需要再次进行一次新的运算,则start信号必须重新来一个上升沿。done输出高电平以后需要软件将其重新拉低。)待解决

6、问题:不知道output口是否能由外部电平拉高或者拉低?modulemux16(clk,rst_n,2BJ-EPM240V2学习板实验说明start,ain,bin,yout,done);inputclk;//芯片的时钟信号。inputrst_n;//低电平复位、清零信号。定义为0表示芯片复位;定义为1表示复位信号无效。inputstart;//芯片使能信号。定义为0表示信号无效;定义为1表示芯片读入输入管脚得乘数和被乘数,并将乘积复位清零。input[15:0]ain;//输入a(被乘数),其数据位宽为16bit.inp

7、ut[15:0]bin;//输入b(乘数),其数据位宽为16bit.output[31:0]yout;//乘积输出,其数据位宽为32bit.outputdone;//芯片输出标志信号。定义为1表示乘法运算完成.reg[15:0]areg;//乘数a寄存器reg[15:0]breg;//乘数b寄存器reg[31:0]yout_r;//乘积寄存器regdone_r;reg[4:0]i;//移位次数寄存器always@(posedgeclk)beginif(!rst_n)beginareg<=16'h0000;breg<=16'

8、h0000;done_r<=1'b0;yout_r<=32'h00000000;i<=5'd0;endelseif(start)//启动运算beginif(i<5'd21)i<=i+1'b1;if(i==5'd0)begin//锁存乘数、被乘数areg<=ain;breg<=bin;endelseif(

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

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

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