EDA实验-----四位乘法器的设计(QuartusII)

目录

一、实验目的

二、实验设备

三、实验原理

四、实验内容

五、实验步骤

六、实验结果

七、实验过程

1.乘法器原理

2.编程思路和编程实现

3.仿真测试

4.电路连接

5.文件烧录


一、实验目的

  1. 了解四位并行乘法器的原理。
  2. 了解四位并行乘法器的设计思想。
  3. 掌握用Verilog语言实现基本二进制运算的方法。
  4. 掌握Verilog语言的基本语法。

二、实验设备

  1. PC机一台;
  2. FPGA实验箱一台。

三、实验原理

        实现并行乘法器的方法又很多种,但是归结起来基本上分为两类,一类是靠组合逻辑电路实现,另一类流水线实现。流水线结构的并行乘法器的最大点就是速度快,尤其是在连续输入的乘法器中,可以达到近乎单周期的运算速度,但是实现起来比组合逻辑电路要稍微复杂一些。下面就组合逻辑电路实现无符号数乘法的方法作详细介绍。假如有被乘数A 和乘数B,首先用A 与B 的最低位相乘得到S1,然后再把A 左移1 位与B 的第2 位相乘得到S2,再将A 左移3 位与B 的第三位相乘得到S3,依此类推,直到把B 的所有位都乘完为止,然后再把乘得的结果S1、S2、S3……相加即得到相乘的结果。需要注意的是,具体实现乘法器并不是真正的去乘,而是利用简单的判断去实现,举个简单的例子。假如A 左移n 位后与B 的第n 位相乘,如果B 的这位为‘1’,那么相乘的中间结果就是A 左移n 位后的结果,否则如果B 的这位为‘0’,那么就直接让相乘的中间结果为0 即可。B 的所有位相乘结束后,把所有的中间结果相加即得到A 与B 相乘的结果。

在本实验中需要掌握的基本语法知识:

1、参数定义关键词parameter的使用;

2、for语句的用法;

3、移位操作符及其用法。

(参考文献:Verilog HDL语言基础知识-CSDN博客)

四、实验内容

        本实验的任务是实现一个简单的四位并行乘法器,被乘数A 用拨挡开关模块的 SW1~SW4 来表示,乘数B 四个独立按键来表示,相乘的结果用LED 模块的D1~D8 来表示,LED 亮表示对应的位为‘1’。拨动开关输入一个四位的被乘数和一个四位的乘数,经过设计电路相乘后得到的数据在LED 灯上显示出来。

五、实验步骤

A

212,213,34,35

B

153,95 ,154,31

LED[7:0],LED_CS

167,165,166,162,164,159,161,156,174

  1. 打开QUARTUSII 软件,新建一个工程。
  2. 建完工程之后,再新建一个Verilog File,打开Verilog编辑器对话框。
  3. 按照实验原理和自己的想法,在Verilog编辑窗口编写Verilog程序。
  4. 编写完Verilog程序后,保存起来。对编写的Verilog程序进行编译并仿真,对程序的错误进行修改。
  5. 编译仿真无误后,依照下方的表格进行管脚分配。分配完成后,再进行全编译一次,以使管脚分配生效。(管脚接口如下表所示)
  6. 用下载电缆通过JTAG 口将对应的sof 文件加载到FPGA 中。
  7. 将数字信号源模块F的时钟选择为1kHz,拨动相应的拨动开关,输入一个四位的乘数(SW5-SW8)和被乘数(key1- key4),观察在发光管D1-D8上显示的结果(灯亮表示对应的位为1)并记录。观察实验结果是否与自己的编程思想一致。
  8. 实验完毕,关闭电源,整理实验器材。

六、实验结果

当设计文件加载到目标器件后,拨动相应的拨码开关,输入一个四位的乘数和被乘数,则在LED灯上显示这两个数值相乘的结果的二进制数。

七、实验过程

1.乘法器原理

乘法器是处理器设计过程中经常要面对的运算部件。一般情况下,乘法可以直接交由综合工具处理或者调用EDA厂商现成的IP,这种方式的好处是快捷和可靠,但也有它的不足之处,比如影响同一设计在不同工具平台之间的可移植性、时序面积可采取的优化手段有限、个性化设计需求无法满足等。所以,熟悉和掌握乘法器的底层实现原理还是有必要的,技多不压身,总有用得上的时候,同时也是一名IC设计工程师扎实基本功的体现。

不采用任何优化算法的乘法过程,可以用我们小学就学过的列竖式乘法来说明。从乘数的低位开始,每次取一位与被乘数相乘,其乘积作为部分积暂存,乘数的全部有效位都乘完后,再将所有部分积根据对应乘数数位的权值错位累加,得到最后的乘积。如下图,左边为十进制乘法过程,基数为10,右图为二进制乘法过程,基数为2。PP0~PP3分别表示每次相乘后的部分积。可见,二进制乘法与十制乘法本质上是没有差别的

EDA实验-----四位乘法器的设计(QuartusII)_第1张图片

2.编程思路和编程实现

        根据乘法器的原理,如果乘数和被乘数的位数分别是m和n,那么乘出来的结果数位数就是m+n-1位。

        这里我们会获取到两个输入的数据,分别是乘数和被乘数,我们可以对乘数每一位去进行遍历,如果乘数当前遍历到的位数为1的话,那么结果数就加上被乘数左移一位;如果遍历到0的话,那就不执行任何操作,直接进行下一次循环遍历。

创建Verilog文件

EDA实验-----四位乘法器的设计(QuartusII)_第2张图片

然后就进行编程,代码如下:

module test_04(
	A,B,R
	);
input [3:0] A,B;
parameter s=4;
output [7:0] R;
integer i;
reg [7:0] R;
	always@(A or B)
	begin
	R=0;
		for(i=0;i

然后就是设置为顶层文件编译运行,如果结果无误后的话,我们可以去进行仿真实验。

3.仿真测试

创建仿真文件,如图所示:

EDA实验-----四位乘法器的设计(QuartusII)_第3张图片

然后双击此处空白区域(鼠标左键)EDA实验-----四位乘法器的设计(QuartusII)_第4张图片

 然后点击此处设置参数EDA实验-----四位乘法器的设计(QuartusII)_第5张图片

然后,先点击List,列出参数变量,然后再点击下面箭头指向的位置,把这些参数右移到当前波形仿真文件中,最后点击OK就行了。 

EDA实验-----四位乘法器的设计(QuartusII)_第6张图片 EDA实验-----四位乘法器的设计(QuartusII)_第7张图片

然后就是去进行参数的设置,点击上面箭头指向的位置,设置自动增加型的参数,下面箭头指向的是周期,可自定义。EDA实验-----四位乘法器的设计(QuartusII)_第8张图片

EDA实验-----四位乘法器的设计(QuartusII)_第9张图片

 最后就去编译运行,进行生成仿真波形,结果如下:EDA实验-----四位乘法器的设计(QuartusII)_第10张图片

 仿真测试无误后,我们就可以去进行电路的连接。

4.电路连接

鼠标右键点击Verilog文件,然后点击生成子模块文件。

EDA实验-----四位乘法器的设计(QuartusII)_第11张图片

没有问题后,就创建block文件,如图所示:EDA实验-----四位乘法器的设计(QuartusII)_第12张图片

打开元器件,点开project文件,我们就可以看到我们Verilog语言写的元器件,然后直接拿出来用就行了。EDA实验-----四位乘法器的设计(QuartusII)_第13张图片

 最后就是去连接电路图即可,连接电路图时因为输入和输出是有多个宽度的量,那就要用总线去连接,之后就要把输入输出的名字进行修改,后面要加上变量的宽度!!!EDA实验-----四位乘法器的设计(QuartusII)_第14张图片

然后就是去绑定引脚 ,结果如下所示:EDA实验-----四位乘法器的设计(QuartusII)_第15张图片

 最后就是整体去编译运行了,没有错误后,我们就可以去进行烧录操作了。EDA实验-----四位乘法器的设计(QuartusII)_第16张图片

5.文件烧录

点击此处。

EDA实验-----四位乘法器的设计(QuartusII)_第17张图片 这里我们就可以看到有一个芯片,也就是我们生成的sof文件,只需要把这个文件烧录到你的开发板就行了。(注意:上面如果显示No Hardware的话,要点开旁边的接口设置,设置为USB接口就行了,连接了开发板就会自动显示出来)。

EDA实验-----四位乘法器的设计(QuartusII)_第18张图片

 以上就是本期的全部内容了,我们下一次见!

分享一张壁纸:

EDA实验-----四位乘法器的设计(QuartusII)_第19张图片

你可能感兴趣的:(EDA实验,fpga开发,EDA实验,Quartus,II,13.0,Verilog,硬件)