基于EDA的4位乘法器的设计
- 格式:wps
- 大小:441.48 KB
- 文档页数:8
EDA设计基础实验课程论文题目乘法器学院通信专业班级学生姓名指导教师2013年6月25 日摘要随着工艺水平的发展,集成电路设计向着速度更快,面积更小的方向稳步发展着。
处理器作为集成电路设计产品的代表,更是需要体现出这种发展趋势。
为了使整体性能有较好的表现,各方面的优化在处理器的各组成部件的设计中都应有所体现。
乘法器是处理器中的一个重要组成部分。
在多媒体应用、图像处理等领域中,大量的循环乘法运算使得乘法器的作用尤为突出,其对处理器的整体性能也起到了至关重要的影响。
本文就是要针对速度和面积方面的性能提高提出查找表乘法器:4bit*4bit查找表乘法器的设计及具体实施方案。
采用了4 - 2 和5 - 2 混合压缩器对部分积进行压缩, 减少了乘法器的延时和资源占率;经Quartus II 集成开发环境下的综合仿真测试, 与用Verilog HDL 语言实现的两位阵列乘法器和传统的Booth编码乘法器进行了性能比较, 得出用这种混合压缩的器乘法器要比传统的 4 - 2 压缩器构成的乘法器速度提高了10 % , 硬件资源占用减少了1 % 。
关键词:乘法器;改进Booth算法;Verilog HDL语言AbstractAs technical level develops, IC design progresses in both the ways of higher speed and smaller area steadily. CPU is more likely to represent this trend for it is a typical product of IC design. To get a better performance of the whole target,we should optimize all the components of the CPU in all possible ways.Multiplier is an important component of the CPU. In the domains of multimedia application, image process and so on, plenty of multiplications in cycles make multiplier a significant part, which plays an important role in deciding the performance of the whole CPU.This paper is about to focus on improvement on speed as well as area and present lookup table multipliers varied by data width:4bit*4bit lookup table multipliers and actualization.Using 4 - 2 compressor and 5 - 2 compressor to compress partial products , while designing multiplier to reduce the delay of time and ratio of resource . Comparing performance of multiplier described in Verilog HDL on speed 、area and the utilization ratio of resource in the integrated exploitation environment of Quartus II . the speed of this multiplier is increased by 10 % and its hardware resource is reduced by 1 % .Keywords multiplier; modified Booth algorithm;Verilog HDL language目录中文摘要 (I)ABSTRACT (II)第一章绪论 (1)1.1课题背景 (1)1.2国内外发展现状 (1)1.2.1国外研究情况 (1)1.2.2国内研究情况 (2)1.3乘法器设计原理 (2)第二章乘法器简介 (4)2.1乘法器工作原理 (4)2.2乘法器实现方法 (4)2.2.1线性结构 (4)2.2.2Wallace 树结构 (5)第三章查找表乘法器的功能仿真 (7)3.1查找表原理 (7)3.1.1部分积压缩器功能简介 (7)3.2设计端口信号描述 (7)3.3查找表乘法器的功能仿真图 (8)第四章相关类型乘法器算法的简介 (9)4.1改进Boosh算法 (9)4.2 关键路径上Booth 编码模块电路设计 (11)第五章Verilog HDL语言 (13)5.1什么是Verilog HDL语言 (13)5.1.1Verilog HDL 简介 (13)5.2Verilog HDL语言与VHDL语言的比较 (13)5.3用Verilog HDL语言编写的程序仿真图 (14)结论 (15)参考文献 (16)致谢 (18)附录 (20)第一章绪论1.1课题背景Ve rilog HDL 是当今最为流行的一种硬件描述语言, 完整的Ve rilog HDL 足以对最复杂的芯片和完整的电子系统进行描述。
实验二高速四位乘法器设计
一、实验目的
1.熟悉利用MAX-plusⅡ的原理图输入方法设计简单的组合电路
2.掌握层次化设计的方法
3.掌握高速乘法器的设计方法
二、实验原理
根据乘法的运算规则,不难得出下图所示的乘法器的原理框图。
4位加法器可以选择74283,b0*a,b1*a, b2*a,b3*a实际就是1位和4位的与运算,如下图所示。
由原理框图不难得出高速四位乘法器电路图。
三、实验内容
按以上原理实现一个高速4位乘法器
四、实验步骤
1.如上图所示,利用MAX-plusⅡ中的图形编辑器设计1-4的二进制乘法器,进行编译、仿真,并将其设置成为一元件(可根据需要对元件符号进行调整)。
注意:编译之前必须将文件设为当前文件。
2.建立一个更高得原理图设计层次,利用前面生成的1-4的二进制乘法器和调用库中的74283元件设计一高速4位乘法器
3.选择器件“Assign”|“Device”|“MAX7000S”|“EPM7128SLC84-6”,并根据下载板上的标识对管脚进行配置。
然后下载,进行硬件测试,检验结果是否正确。
五、实验报告:
先设计一个4位加法器,如下图:
高速4位乘法器元件图如下:
4位乘法器仿真波形:。
实验一:五人表决器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY WRBJQ ISPORT( A , B , C , D , E , F: IN BIT;Y: OUT BIT);END WRBJQ;ARCHITECTURE PART OF WRBJQ ISSIGNAL S1:INTEGER RANGE 0 TO 10;BEGINPROCESS(A,B,C,D,E,F)BEGINS1<=0;IF A='1' THEN S1<=S1+1;ELSIF B='1' THEN S1<=S1+1;ELSIF C='1' THEN S1<=S1+1;ELSIF D='1' THEN S1<=S1+1;ELSIF E='1' THEN S1<=S1+1;ELSIF F='1' THEN S1<=S1+1;END IF;END PROCESS;Y<='1' WHEN S1>2 ELSE '0';END PART;调试过程中遇到的问题:1、写完程序调试的过程中,显示WRBJQ没有定义。
原因是实体名和结构体名没写一样导致的,改正方法就是改成一样的,就可以通过了。
2、实验过程中还由于个人粗心导致单词的错误,修改错误单词即可。
3、实验过程中在一条语句结束后忘记加";",加上即可。
实验小结:第一次运用这个软件,在安装过程和使用过程中都遇到了很多问题,好在在老师和同学饿帮助下都一一解决。
五人表决器需先列出真值表,根据真值表写出枚举型的程序,还有一种根据真值表写出表达式程序的对于人数多的表决器较为方便,而五人的用这种枚举型的更直观。
实验七综合实验四位移位相加法乘法器一:实验内容用移位相加法设计一个四位(4bit)乘法器二:实验原理4bit 乘法器的电路实现方法有多种,其中典型的电路有两种,其一:用组合电路实现,该电路将用到三个4bit 加法器,16 个两输入与门,该电路的特点:设计电路简单直观,电路运算速度快。
但缺点是使用器件较多,连线较多。
其二:就是本实验中要用的部分积。
移位相加的方法实现的4bit 乘法器。
部分积移分相加乘法器的算法。
下面将一个具体的乘法例题来分析这种算法,题中M4M3M2M1 是被乘数,也可用M 表示,N4N3N2N1 函乘数,也可用N 表示。
从以上算法可以看到,该算法其有四个重复运算周期,每个周期共有三步运算,第一步:求Ni 与M 的乘积;第二步将Ni 与M 乘积与前一个周期右移后的部分之和相加,第三步:将第二步的结果右移一位得到的部分积之和,为下一周期的运算作准备,当做完四次周期物理运算后,得到的最后数就是4bit 相乘器的乘积数。
三:设计理念1)74283级联从上图可以看出每一个运算周期都都是由两个部分积相加得到,然后再右移一位,所以乘法器的主要部分有74283带4位快速进位的全加器组成。
将乘法器打包成如下形式波形图:在时钟的每一个上升沿的时候,乘法器进行运算。
2)将二进制转换为10进制但是由于要在七段LED数码管中显示,所以原始的输出形式不能满足,因为上边的器件输出的是二进制,所以要将输入的乘数被乘数和结果转化为10进制,最大四位二进制即十进制的15,将被乘数A【3..0】和乘数B【3..0】除以10,余数即为个位,同理输出的结果最大为225,连续两次除以10,分别得到个位,十位的数,这样就将二进制的乘数,被乘数和结果转化为了10进制的数,从而方便了数码管的显示。
如图:rl rm rn个位,q4 q5 rh十位,q2百位。
3)选择器下面是将输出结果用7449译码器译码到数码管中,但是一个译码器不能同时译码(最多7个)数据,所以要用时钟信号以及多选器。
乘位阵列乘法器设计集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)课程设计报告课程设计题目: 4乘4位阵列乘法器设计学生姓名:杨博闻学号专业:计算机科学与技术班级: 1120701指导教师:汪宇玲2014年 1月 4日一、设计目的1.掌握乘法器的原理及其设计方法。
2 .熟练应用CPLD 设计及 EDA 操作软件。
二、设计设备1.TDN-CM+或 TDN-CM++教学实验系统一套。
2 ·PC 微机一台。
3·ispDesignEXPERT 软件模型机数据通路结构框图三、设计原理本实验用 CPLD 来设计一个 4 ×4 位乘法器,相对于画电路图输入,用 ABEL 语言描述是比较方便的。
其算式如下(其中括号中的数字表示在 ABEL 源程序描述中的功能块调用编号):a3 a2 a1 a0× b3 b2 b1 b0----------------------------------------------------------------------------------------------------------a3b0(10) a2b0(6)a1b0(3) a0b0(1)a3b1(13) a2b1(9) a1b1(5)a0b1(2)a3b2(15) a2b2(12) a1b2(8) a0b2(4) + a3b3(16) a2b3(14) a1b3(11) a0b3(7)-----------------------------------------------------------------------------------------------------------p7 p6 p5 p4 p3 p2 p1 p0四、设计步骤1.安装EDA 软件打开计算机电源,进入 Windows 系统,安装上述 ispDesignEXPERT软件。
实验四、4位乘法器的实现一、实验前准备本实验例子使用独立扩展下载板EP1K10_30_50_100QC208(芯片为EP1K100QC208)。
EDAPRO/240H实验仪主板的VCCINT跳线器右跳设定为3.3V;EDAPRO/240H实验仪主板的VCCIO跳线器组中“VCCIO3.3V”应短接,其余VCCIO均断开;独立扩展下载板“EP1K10_30_50_100QC208”的VCCINT跳线器组设定为 2.5V;独立扩展下载板“EP1K10_30_50_100QC208”的VCCIO跳线器组设定为3.3V。
请参考前面第二章中关于“电源模块”的说明。
二、实验目的1、掌握利用V erilog HDL语言实现乘法器的方法2、掌握利用8位数码显示模块的设计三、实验内容1、用Verilog HDL语言按照移位循环相加方法实现4x4乘法器模块。
2、用Verilog HDL语言实现8位数码显示模块。
三、实验原理乘法运算模块可采用移位相加原理实现,本实验采用乘法器模块和显示模块在顶层模块中例化的方法实现。
四、实验步骤1、按照以下步骤完成每一个模块的设计:新建设计文件夹(不可用中文)-》新建设计文件-》输入设计项目(原理图/Verilog HDL文本代码)-》存盘(注意原理图/文本取名)-》将设计项目设置成Project-》选择目标器件-》启动编译-》(可选:建立仿真波形文件-》仿真测试和波形分析)2、新建顶层原理图文件,调入第1步中设计好的各模块,以原理图方式实现顶层设计-》存盘(注意原理图/文本取名)-》将设计项目设置成Project-》选择目标器件-》启动编译-》建立仿真波形文件-》(可选:建立仿真波形文件-》仿真测试和波形分析)-》引脚锁定并编译-》编程下载/配置-》硬件测试五、硬件测试说明1、乘数与被乘数接8位数字开关A组。
2、结果显示接动态数码管。
六、硬件连线说明如果独立扩展板芯片为EP1K30QC208 PIN分配CLK 79 接GCLK1Rst 71 接按键F12,需要连线到右下角F12的连线插孔Display[6] 93 接数码管段位引线ADisplay[5] 92 接数码管段位引线BDisplay[4] 90 接数码管段位引线CDisplay[3] 89 接数码管段位引线DDisplay[2] 88 接数码管段位引线EDisplay[1] 87 接数码管段位引线FDisplay[0] 86 接数码管段位引线GSel[2] 70 接SS2Sel[1] 69 接SS1Sel[0] 68 接SS0data_a[3] 39 接8位数字开关A SW1data_a[2] 40 接8位数字开关A SW2data_a[1] 41 接8位数字开关A SW3data_a[0] 44 接8位数字开关A SW4data_b[3] 45 接8位数字开关A SW5data_b[2] 46 接8位数字开关A SW6data_b[1] 47 接8位数字开关A SW7data_b[0] 53 接8位数字开关A SW8如果独立扩展板芯片为EP1K 30TC144 PIN分配CLK 55 接CLK(T)-CLOCK(P)Rst 67 接按键F12,需要连线到右下角F12的连线插孔Display[6] 91 接数码管段位引线ADisplay[5] 90 接数码管段位引线BDisplay[4] 88 接数码管段位引线CDisplay[3] 87 接数码管段位引线DDisplay[2] 86 接数码管段位引线EDisplay[1] 83 接数码管段位引线FDisplay[0] 81 接数码管段位引线GSel[2] 70 接SS2Sel[1] 69 接SS1Sel[0] 68 接SS0data_a[3] 37 接8位数字开关A SW1data_a[2] 38 接8位数字开关A SW2data_a[1] 39 接8位数字开关A SW3data_a[0] 41 接8位数字开关A SW4data_b[3] 42 接8位数字开关A SW5data_b[2] 43 接8位数字开关A SW6data_b[1] 44 接8位数字开关A SW7data_b[0] 46 接8位数字开关A SW8程序:module CFQ4梁一一(input clk,input wire [4:1] ain, //输入ainput wire [4:1] bin, //输入binput rest_n,output reg [2:0] sel, //位选output reg [6:0] display);reg [15:0] count_clk; // 分频计数器,最大2^16=64K分频reg [3:0] a; //输入ain寄存器reg [3:0] b; //输入bin寄存器reg [7:0] mul_num; //乘得结果reg [3:0] g_bit; //个位reg [3:0] s_bit; //十位reg [3:0] b_bit; //百位reg [3:0] disp_temp;integer i;//assign a=ain;//assign b=bin;//分频always @ (posedge clk or negedge rest_n) beginif(rest_n ==0) begincount_clk=16'b0;endelse beginif(count_clk==16'hffff) begincount_clk=16'b0;endelse begincount_clk=count_clk+1'b1;endendend//乘法运算always @ (ain or bin ) beginmul_num=8'b0;for (i=1;i<=4;i=i+1) beginif(bin[i]) mul_num=mul_num+(ain<<(i-1));else mul_num=mul_num+1'b0;endb_bit=(mul_num/100)%10;s_bit=(mul_num/10)%10;g_bit=mul_num%10;end// 位选always @ (posedge count_clk[3] or negedge rest_n) begin if(rest_n ==0) beginsel=3'b0;endelse beginif (sel==3'b111) beginsel=3'b0;endelse beginsel=sel+1'b1;endendendalways @ (sel) begincase(sel)3'b000: disp_temp=4'b1010;3'b001: disp_temp=4'b1010;3'b010: disp_temp=4'b1010;3'b011: disp_temp=4'b1010;3'b100: disp_temp=4'b1010;3'b101: disp_temp=b_bit;3'b110: disp_temp=s_bit;3'b111: disp_temp=g_bit;default: disp_temp=4'b1010;endcaseend//显示译码,共阴数码管,a:对应高位,g:对应低位always @ (disp_temp) begincase (disp_temp)4'b0000: display=7'b1111110; //04'b0001: display=7'b0110000; //14'b0010: display=7'b1101101; //24'b0011: display=7'b1111001; //34'b0100: display=7'b0110011; //44'b0101: display=7'b1011011; //54'b0110: display=7'b1011111; //64'b0111: display=7'b1110000; //74'b1000: display=7'b1111111; //84'b1001: display=7'b1111011; //94'b1010: display=7'b0000001; //-default: display=7'b0000000; //全灭endcaseend endmodule。
四位硬件乘法器一、实验目的:1、学习移位相加时序式乘法器的设计方法2、学习层次化设计方法3、学习原理图调用VHDL模块方法4、熟悉EDA仿真分析方法二、实验原理:乘法器的原理是,乘法通过逐项移位相加原理来实现,从被乘数的最地位开始,若为1,则乘数左移后与上一次的和相加;若为0,左移后以全零相加,直至被乘数的最高位。
ARICTL是乘法运算控制电路,它的START信号的上升沿与高电平有两个功能,即16位寄存器清0和被乘数A向移位寄存器SREG加载;它的低电平则作为乘法使能信号CLK位乘法时钟信号,被乘数加载于4位右移寄存器SREG 后,在时钟同步下由低位至高位逐位移出,当其为1时,与门ANDARITH打开,4位乘数B在同一节拍进入4位加法器,与上一节拍锁存在16位锁存器REG的高4位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器;而当被乘数的移出位为0时,与门全0输出。
如此往复,直至4个时钟脉冲后,乘法运算过程中止,此时REG的输出值即最后乘积。
三、实验设备:计算机一台操作系统:WINDOWS XP软件:ispDesignEXPERT System四、实验步骤:1、4位右移寄存器SREGLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SREG ISPORT(EN:IN STD_LOGIC;CLK: IN STD_LOGIC;LOAD:IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0);QB: OUT STD_LOGIC);END SREG;ARCHITECTURE ART1 OF SREG ISSIGNAL REG:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(CLK,LOAD)BEGINIF CLK'EVENT AND CLK='1'THENIF LOAD='1'THEN REG<=DIN;ELSEREG(2 DOWNTO 0)<=REG(3 DOWNTO 1);END IF;END IF;END PROCESS;QB<=REG(0);END ART1;2、4位加法器ADDERLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADDER ISPORT(CIN:IN STD_LOGIC_VECTOR;B,A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);S: OUT STD_LOGIC_VECTOR(4 DOWNTO 0);COUNT:OUT STD_LOGIC_VECTOR);END ADDER;ARCHITECTURE ART2 OF ADDER ISBEGINS<='0'&A+B;END ART2;3、选通与门模块ANDARITHLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ANDARITH ISPORT(ABIN:IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END ANDARITH;ARCHITECTURE ART3 OF ANDARITH ISBEGINPROCESS(ABIN,DIN)BEGINFOR I IN 0 TO 3 LOOPDOUT(I)<=DIN(I) AND ABIN;END LOOP;END PROCESS;END ART3;4、锁存器REGLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG ISPORT(CLK,CLR,EN:IN STD_LOGIC;D: IN STD_LOGIC_VECTOR(4 DOWNTO 0);Q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END REG;ARCHITECTURE ART4 OF REG ISSIGNAL R8S:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINPROCESS(CLK,CLR)BEGINIF CLR='1'THEN R8S<=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1'THENR8S(2 DOWNTO 0)<=R8S(3 DOWNTO 1);R8S(7 DOWNTO 3)<=D;END IF;END PROCESS;Q<=R8S;Q1<=R8S(7 DOWNTO 4);Q2<=R8S(3 DOWNTO 0);END ART4;5、运算控制器ARICTLLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ARICTL ISPORT(CLK: IN STD_LOGIC;START: IN STD_LOGIC;CLKOUT: OUT STD_LOGIC;RSTALL: OUT STD_LOGIC;ARIEND: OUT STD_LOGIC);END ENTITY ARICTL;ARCHITECTURE ART5 OF ARICTL ISSIGNAL CNT:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINRSTALL<=START;PROCESS(CLK,START) ISBEGINIF START='1'THEN CNT<="0000";ELSIF CLK'EVENT AND CLK='1'THENIF CNT<4 THENCNT<=CNT+1;END IF;END IF;END PROCESS;PROCESS(CLK,CNT,START) ISBEGINIF START='0'THENIF CNT<4 THENCLKOUT<=CLK;ARIEND<='0';ELSE CLKOUT<='0';ARIEND<='1';END IF;ELSE CLKOUT<=CLK;ARIEND<='0';END IF;END PROCESS;END ARCHITECTURE ART5;6、顶层原理图。
4位阵列乘法器[整理版]目录一、设计题目 ......................................................2 二、设计目的 (2)三、设计过程 (2)3.1设计原理 .......................................................23.2器件选择 .......................................................33.3逻辑原理 .......................................................33.4阵列乘法器的逻辑原理 (4)3.5 时序图..........................................................4 四、设计心得 (5)五、参考文献 (6)4位阵列乘法器一、设计题目 4位阵列乘法器二、设计目的计算机组成原理是计算机专业的核心专业基础课。
课程设计属于设计型实验,不仅锻炼学生简单计算机系统的设计能力,而且通过进行设计及实现,进一步提高分析和解决问题的能力。
同时也巩固了我们对课本知识的掌握,加深了对知识的理解。
在设计中我们发现问题,分析问题,到最终的解决问题。
凝聚了我们对问题的思考,充分的锻炼了我们的动手能力、团队合作能力、分析解决问题的能力。
三、设计过程3.1设计原理阵列乘法器是类似于人工计算(如图1.1所示)的方法,乘数与被乘数都是二进制数。
所以可以通过乘数从最后一位起一个一个和被乘数相与,自第二位起要依次向左移一位,形成一个阵列的形式。
这就可将其看成一个全加的过程,将乘数某位与被乘数某位与完的结果加上乘数某位的下一位与被乘数某位的下一位与完的结果再加上前一列的进位进而得出每一位的结果。
一个阵列乘法器要完成X(Y乘法运算(X=X4X3X2X1,Y=Y4Y3Y2Y1)。
1.课程设计的内容和要求内容:设计四位原码乘法器电路。
要求:1.有关资料,设计乘法器电路;2.画出乘法器逻辑图;3.在实验箱上完成乘法器电路的组装,调试,核对记录,测试有关数据,通过老师当场验收;4.完成课程设计报告。
1.课程设计原理运用存储器的存储功能实现数字的存储。
令电路的初始状态为000,000,000000。
以二进制的形式输入数字,计算方式是以十进制数字乘法。
输入的数字为三位数字,输出的是六位数字。
先存储输入的乘数和乘积,然后再将乘积的导线端连到输出段,此时之前输入的乘积就可以在输出端显示。
此时序电路的真值表为:1.课程设计思路本次课程设计的题目为四位原码乘法器,利用真值表输入乘数时,需要存放数字,于是我查阅了一些资料,用存储器可以实现这一电路,所以本实验中用到的是INTEL 2114芯片。
具体实现过程如下图:aabbF32F 11.课程设计所需的器材1.2114是一个容量为1K4位的静态RAM芯片,常用于寄存器。
其具体的引脚图为:此芯片的电路图为:2.数字电路实验箱3.导线若干1.课程设计实现本次课程设计的题目是四位原码乘法器电路。
此部分只用到了2块INTEL2114芯片,具体连接如下:1、先将这些芯片按在电路板上(注意不要插反,否者容易烧毁芯片)。
2、将两片芯片的A6和GND端,A7,A8,A9接地。
3、Vcc端接电压5V,cs接存储端,WE端接控制端。
4、两块芯片的A5,A4,A3组成一个乘数,A0,A1,A2组成另一个乘数。
其中一块芯片的I/O1,I/O2,I/O3,I/O4和另一块芯片的I/O1,I/O2组成要求的乘积。
乘数与乘积的显示方式均为二进制,但是计算方法是以十进制数的乘法法则计算。
1.调试步骤及方法在连接实验器件之前,要先检查如下实验器件:1、检查芯片引脚是否有损坏。
2、检查电路板是否好用。
连接实验器件时要注意:2严格按照电路图一步一步连接,以避免连接错误。
3导线要先连接电源测试是否导电。
4位乘法器的设计一、设计目的设计一个四位乘法器。
编写VHDL 源代码,得出正确的仿真波形,并在实验开发系统上进行硬件演示。
二、乘法器设计原理四位二进制乘法采用移位相加的方法。
即用乘数的各位数码,从高位开始依次与被乘数相乘,每相乘一次得到的积称为部分积,将第一次得到的部分积左移一位并与第二次得到的部分积相加,将加得的和左移一位再与第三次得到的部分积相加,再将相加的结果左移一位与第四次得到的部分积相加,直到所的部分积都被加过一次。
原理框图:三、设计程序代码1)选通与门模块的源程序ANDARITH.VHDlibrary ieee;use ieee.std_logic_1164.all;entity andarith isport(abin:in std_logic;din:in std_logic_vector(3 downto 0);dout:out std_logic_vector(3 downto 0));end;architecture art3 of andarith isbeginprocess(abin,din)beginfor i in 0 to 3 loopdout(i)<=din(i) and abin;end loop; 锁存器 寄存器加法器选通与门 clk输入 输出end process;end art3;2)4位右移寄存器的源程序SREG4B.VHD library ieee;use ieee.std_logic_1164.all;entity sreg4b isport(clk,en:in std_logic;load:in std_logic;din:in std_logic_vector(3 downto 0);qb:out std_logic);end;architecture art1 of sreg4b issignal reg4:std_logic_vector(3 downto 0); beginprocess(clk,load,en)beginif clk'event and clk ='1' and en='1' then if load='0' then reg4<=din;elsereg4(2 downto 0)<=reg4(3 downto 1);end if;end if;end process;qb<=reg4(0);end art1;3)8位锁存器的源程序REG8.VHDlibrary ieee;use ieee.std_logic_1164.all;entity reg8 isport(clk,clr,en:in std_logic;d:in std_logic_vector(4 downto 0);q: out std_logic_vector(7 downto 0)); end;architecture art4 of reg8 issignal r8s:std_logic_vector(7 downto 0); beginprocess(clk,clr)beginif clr='0' then r8s<=(others=>'0');elsif clk'event and clk='1' and en='1' then r8s(2 downto 0)<=r8s(3 downto 1);r8s(7 downto 3)<=d;end if;end process;q<=r8s;end art4;4)乘法运算控制器的源程序ARICTL.VHD library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity arictl isport(clk,start: in std_logic;en,rstall,ariend:out std_logic);end;architecture art5 of arictl issignal cnt2b:std_logic_vector(2 downto 0); beginrstall<=start;process(clk,start) isbeginif start='0' then cnt2b<="000";elsif clk'event and clk='1' thenif cnt2b<4 thencnt2b<=cnt2b+1;end if;end if;end process;process(clk,cnt2b,start) isbeginif start='1' thenif cnt2b<4 thenen<='1';ariend<='0';else en<='0';ariend<='1';end if;else en<='1';ariend<='0';end if;end process;end art5;5)译码器的源程序YIMAQI.VHDlibrary ieee;use ieee.std_logic_1164.all;entity YIMAQI isPORT(code:IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED7S: OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); end;architecture ART6 of YIMA7 isbeginPROCESS(code)BEGINCASE code ISWHEN "0000" => LED7S <="0000001";WHEN "0001" => LED7S <="1001111";WHEN "0010" => LED7S <="0010010";WHEN "0011" => LED7S <="0000110";WHEN "0100" => LED7S <="1001100";WHEN "0101" => LED7S <="0100100";WHEN "0110" => LED7S <="0100000";WHEN "0111" => LED7S <="0001111";WHEN "1000" => LED7S <="0000000";WHEN "1001" => LED7S <="0000100";WHEN "1010" => LED7S <="0001000";WHEN "1011" => LED7S <="1100000";WHEN "1100" => LED7S <="0110001";WHEN "1101" => LED7S <="1000010";WHEN "1110" => LED7S <="0110000";WHEN "1111" => LED7S <="0111000";WHEN OTHERS => NULL;END CASE;END PROCESS;end ART6;6)4位乘法器的顶层文件四、程序设计步骤1.打开ispEXPERT软件,建立一个新的工程cnt10;1 单击菜单Fil e→New Project2 输入工程路径,工程名2.建立VHDL文件单击File→New菜单项,选择VHDL File选项,单击OK按钮以建立VHDL文件,分别建立4位乘法器的vhd文件ANDARITH.VHD,ARICTL.VHD,REG8.VHD,SREG4B.VHD。
显示译码器vhd文件YIMAQI.vhd和顶层文件3.然后设定管脚4.最后保存编译运行,生成可下载到板子里面的jed文件5.器件下载6.波形仿真结果输入波形输出波形五、心得体会通过这次设计,进一步掌握了ispEXPERT软件的使用方法以及硬件编程下载的基本技能,并掌握了4位乘法器的设计原理。
在设计过程中,我们遇到了各种问题,在老师的指导下和自己的努力,克服了各种问题,最后得到了成功。
总之,这次设计使我掌握了很多有用的经验,也学到了很多在书本上学不到知识,为以后的学习和工作打下坚实的基础。
六、参考文献[1]谭会生、张昌志.EDA技术及应用.西安电子科技大学出版,2001.7[2]侯伯亨、顾新.VHDL硬件描述语言与数字逻辑电路设计.西安电子科技大学出版社,2001.2[3]卢毅等.VHDL与数字电路设计.北京: 科学出版社,2001.4。