ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:187.54KB ,
资源ID:3107349      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3107349.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FPGA课程设计实验报告DOC文档格式.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

FPGA课程设计实验报告DOC文档格式.docx

1、 移位乘法器工作流程图二、 实验步骤算法主程序module MUL(A,B,data );input 7:0 A;0 B;output 15:0 data;wire 15:reg 7:0 D;0 A1;0 B1;reg C;always (A or B)beginA1 = A;B1 = B;D = 0;C = 0;repeat(8)if(A10=1)C,D = D + B1;elseC,D = D + 0;C,D,A1 = C,D,A1 1;endassign data = D,A1;endmodule移位乘法器测试文件module test; reg 7: / Outputs wire 15

2、: / Instantiate the Unit Under Test (UUT) MUL uut ( .A(A), .B(B), .data(data) initial begin / Initialize Inputs A = 0; B = 0; / Wait 100 ns for global reset to finish #20; A = 8b0000_0010; B = 8b0000_1101; / Add stimulus here end三、 实验结果及分析2进制输入输出结果10进制输入输出结果四、 体会通过移位乘法器的设计,简单的了解了ISE软件的基本功能,主要菜单选项,以及

3、如何建立一个工程,如何在工程里面写程序和进行编译和综合等。 总体来说最困难的部分就是把这个移位乘法器的算法弄明白。可能我们平常自己算乘法没有任何困难,但是要通过编码的形式,让计算机能够了解整个算法的流程却不是一件容易的事情。在整个编写移位乘法器的过程中,看懂整个流程图花费了我很长的时间。了解整个算法的流程之后编程自然顺理成章了。所以,我在之后做自己的课题“booth乘法器”的时候我也花费了很长的时间通过上网查询,详细了解这个算法的确切含义。虽然花费了很长的时间在研究算法上,但是我觉得是值得的,因为那是最根本的地方。最后结果也如愿出来了。所以,我觉得以后在编程的时候,了解你要编写模块的作用以及通

4、过什么算法来实现是一件很重要的事情。8位booth乘法器设计Booth算法是一种十分有效的计算有符号数乘法的算法。算法的新型之处在于减法也可用于计算乘积。Booth发现加法和减法可以得到同样的结果。因为在当时移位比加法快得多,所以Booth发现了这个算法,Booth算法的关键在于把1分类为开始、中间、结束三种,如下图所示当然一串0或者1的时候不操作,所以Booth算法可以归类为以下四种情况:Booth算法根据乘数的相邻2位来决定操作,第一步根据相邻2位的4中情况来进行加或减操作,第二部仍然是将积寄存器右移,算法描述如下:(1) 根据当前为和其右边的位,做如下操作: 00: 0的中间,无任何操作

5、; 01: 1的结束,将被乘数加到积的左半部分; 10:1的开始,积的左半部分减去被乘数; 11: 1的中间,无任何操作。(2) 将积寄存器右移1位。 因为Booth算法是有符号数的乘法,因此积寄存器移位的时候,为了保留符号位,进行算术右移。同时如果乘数或者被乘数为负数,则其输入为该数的补码,若积为负数,则输出结果同样为该数的补码。主程序代码:module booth8(data_on,data_out);input data_on;0 data_on;output 19:0 data_out;wire 19:0 R0,R1,R2;reg c1,p;reg 4:0 i;reg 3:0 tmp;

6、reg 19:always(data_on)R0=0;R1=data_on7:0;R2=data_on15:8;p=0;case(R20,p)2b00: R0=R0;b01: R0=R0+R1;b10: R0=R0-R1;b11:endcasec1=R07;c1,R0,R2,p=c1,R0,R2,p1;data=0;repeat(16)repeat(5)tmp,data=tmp,data=5)tmp=tmp+3;tmp=tmp;data3:0=tmp;data,R0,R2=data,R0,R2assign data_out=data;顶层模块:module top( clk,rst,data_

7、out,data_in); input clk,rst; output 19: output 15:0 data_in; reg 2:0 addra,ct; reg clk1; always(posedge clk or negedge rst) begin if(rst = 0) ct=0; clk1 else if(ct=7)=clk1; else ct=ct+1; booth8 U1( .data_out(data_out), .data_on(data_in) ); rom U2( .clka(clk1), / input clka .addra(addra), / input 2 :

8、 0 addra .douta(data_in) / output 15 : 0 douta always(posedge clk1 or negedge rst) if (rst=0) addra = 0;= addra + 1;测试模块: / Inputs reg clk; reg rst; wire 19: top uut ( .clk(clk), .rst(rst), .data_out(data_out), .data_in(data_in) clk = 0; rst = 1; #10 rst=0; #10 rst=1; #800 $stop; always #5 clk=clk;C

9、OE文件,输入的8组数据cdc输出结果:A:乘数 B:被乘数 data_booth:BCD输出积十进制输出积测试波形经过两个礼拜的不懈努力,终于把最后的实验结果按要求完成了。从一开始的一头雾水到逐渐明白了方向,了解了该如何操作。一切都是对未知知识上下求索。虽然团队只有三个人,但是我们互相协助,各司其职,每个人分派自己的任务,并且每天按时按量完成;虽然我们三个人的基础不是很好,但是我们齐心协力,把劣势变成优势,把压力当成动力,每天在实验室忙完了还会主动的在寝室把没有做完的模块继续完善,或者把不了解的部分通过网上查资料、查课本、问同学等方式逐渐弄明白。整个课程设计的过程中,老师和研究生学长以及周围的同学也给了我们很大的帮助,对于一些我们不了解的知识他们都无私的分享给我们。在此,特别向课程设计过程中那些帮助过我们的人表示我诚挚的谢意!虽然两个礼拜时间不是很长,但那种做项目时沉心静气的心态以后值得继续保持!

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2