基于EDA的4位乘法器的设计

合集下载

乘法器设计

乘法器设计

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 足以对最复杂的芯片和完整的电子系统进行描述。

EDA技术之高速四位乘法器设计

EDA技术之高速四位乘法器设计

实验二高速四位乘法器设计
一、实验目的
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位乘法器仿真波形:。

EDA五人表决器四位二进制乘法器交通灯控制器

EDA五人表决器四位二进制乘法器交通灯控制器

实验一:五人表决器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、实验过程中在一条语句结束后忘记加";",加上即可。

实验小结:第一次运用这个软件,在安装过程和使用过程中都遇到了很多问题,好在在老师和同学饿帮助下都一一解决。

五人表决器需先列出真值表,根据真值表写出枚举型的程序,还有一种根据真值表写出表达式程序的对于人数多的表决器较为方便,而五人的用这种枚举型的更直观。

EDA乘法器实验报告

EDA乘法器实验报告

实验七综合实验四位移位相加法乘法器一:实验内容用移位相加法设计一个四位(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软件。

四位二进制乘法器课程设计报告

四位二进制乘法器课程设计报告

外,通过更换库再重新综合很容易移植为ASIC设 计。 (三)独立性 VHDL的硬件描述与具体的工艺技术和硬件结构无 关。设计者可以不懂硬件的结构,也不必管最终设 计实现的目标器件是什么,而进行独立的设计。程 序设计的硬件目标器件有广阔的选择范围,可以是 各系列的CPLD、FPGA及各种门阵列器件。 (四)可操作性 由于VHDL具有类属描述语句和子程序调用等功能, 对于已完成的设计,在不改变源程序的条件下,只 需改变端口类属参量或函数,就能轻易地改变设计 的规模和结构。 (五)灵活性 VHDL最初是作为一种仿真标准格式出现的,有着丰 富的仿真语句和库函数。使其在任何大系统的设计 中,随时可对设计进行仿真模拟。所以,即使在远 离门级的高层次(即使设计尚未完成时),设计者 就能够对整个工程设计的结构和功能的可行性进行 查验,并做出决策。
有了更深了解,其实当初想到设计这个课题。 1.2 设计要求 1)构造一个4位二进制乘法器; 2)受按键控制由4bit输入端口先后输入四位乘数 和被乘数(乘数,被乘数均由HDB3码表示); 3)用两个七段数码管显示积,以十进制显示; 2硬件描述语言——VHDL 2.1 VHDL简介 VHDL语言是一种用于电路设计的高级语言。它在 80年代的后期出现。最初是由美国国防部开发出来 供美军用来提高设计的可靠性和缩减开发周期的一 种使用范围较小的设计语言 。但是,由于它在一 定程度上满足了当时的设计需求,于是他在1987年 成为A I/IEEE的标准(IEEE STD 1076-1987)。 1993年更进一步修订,变得更加完备,成为A I/IEEE的A I/IEEE STD 1076-1993标准。目前,大 多数的CAD厂商出品的EDA软件都兼容了这种标准。 VHDL的英文全写是:VHSIC(Very High eed Integrated Circuit)Hardware Descriptiong Language.翻译成中文就是超高速集成电路硬件描 述语言。因此它的应用主要是应用在数字电路的设 计中。目前,它在中国的应用多数是用在 FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄 厚的单位,它也被用来设计ASIC。 VHDL主要用于

EDA4位乘法器的程序

EDA4位乘法器的程序

实验四、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位阵列乘法器[整理版]

4位阵列乘法器[整理版]

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位数字乘法器设计

4位数字乘法器设计

4位数字乘法器设计
设计一个4位数字乘法器需要考虑多个方面,包括硬件设计和
算法实现。

首先,在硬件设计方面,可以使用逻辑门、寄存器和加法器等
元件来实现。

可以将两个4位的输入数分别存储在两个寄存器中,
然后使用逻辑门和加法器来实现乘法运算。

具体来说,可以使用乘
法器的部分积计算方法,将被乘数的每一位与乘数的每一位相乘,
并将结果相加得到最终的乘积。

另外,还需要考虑溢出和进位的处理。

在乘法过程中,可能会
产生进位,需要确保算法能够正确处理进位。

同时,乘法的结果可
能会超出4位的表示范围,因此需要考虑如何处理溢出的情况。

在算法实现方面,可以采用乘法的基本原理,逐位相乘并累加
的方法来实现4位数字的乘法运算。

可以使用循环结构来逐位相乘
并累加,同时考虑进位和溢出的情况,确保算法的正确性和稳定性。

总的来说,设计一个4位数字乘法器需要综合考虑硬件设计和
算法实现两个方面,确保乘法器能够正确高效地进行4位数字的乘法运算。

数电— 4位并行乘法器的电路设计与仿真

数电— 4位并行乘法器的电路设计与仿真
# 140reset=0,a=15,b=14,y=146
# 155reset=0,a=15,b=14,y=162
# 170reset=0,a=15,b=14,y=178
# 185reset=0,a=15,b=14,y=210
# 200reset=0,a= 0,b= 0,y=210
# 225reset=0,a= 0,b= 0,y=156
reg a,b,ci;
wire s,co;
fulladder add0(s,co,a,b,ci);
initial
begin
a=1'b0;b=1'b0;ci=1'b1;
#15 a=1'b0;b=1'b0;ci=1'b0;
$monitor($time,"a=%d,b=%d,ci=%d,s=%d,co=%d",a,b,ci,s,co);
文档:分析文档、设计文档、测试文档、代码和总结。
设要有完整的组合逻辑电路设计步骤;
每一步骤完成要正确合理;
设计电路时分模块测试。
时间安排
分析设计阶段:周一至周二上午;
代码编写阶段:周二下午至周三;
代码测试优化阶段:周四;
仿真分析及总结:周五上午;
验收:周五下午。
验收标准
文档齐全(20分)。
注:无文档不可以进行下一步。
#15 a=1'b1;b=1'b1;ci=1'b1;
end
endmodule
//一位全加器加上最大延迟15ns,分析乘法器最大延时为90ns(六个全加器),
//实际测得乘法器延时75ns,即可输出正确结果。测试结果如下:
# 0reset=1,a= 1,b= 4,y= 0

eda乘法器设计

eda乘法器设计

实验四乘法器设计一、实验目的1、掌握利用移位相加方法实现乘法运算的基本原理;2、通过一个4×4的二进制乘法器的设计,学习利用VHDL语言来描述简单的算法,3、熟悉VHDL语言的变量数据对象在描述算法中的作用;二、实验原理实现乘法运算的算法很多,比较常见的有以下几种方法:移位相加、查询表、逻辑树等。

这里主要介绍移位相加的方法。

这种方法实现起来相对简单,目前大多数的单片机和微处理器都采用这种方法。

但是这种方法的最大缺点是速度慢,8位乘法需要8个时钟周期才能得到结果。

根据运算过程中左移或者右移对象的不同,采用移位相加实现乘法运算又有两种算法:(1)部分和固定、部分积左移法(算法1)(2)部分和右移、部分积固定法(算法2)无论是从用时方面还是占用硬件资源方面看,算法2都要优于算法1。

在算法2中,部分积各位是固定的,部分和逐步右移。

下面以4位乘法运算为例,说明其工作原理。

假设4位被乘数X为X3X2X1X0, 乘数Y为Y3Y2Y1Y0, 4×4位结果得到8位的乘积S,将它存放在一个9位累加寄存器中。

累加器初始值为全零,即“000000000”。

算法2的运算过程如下:(1)移出乘数的最低位Y0乘以被乘数X得到第1个部分积S0;(2)第1个部分积S0与累加器S中高4位相加,结果仍然存放在累加器中,即S<=S+S0; (3)将累加器中内容向右移1位,结果仍然存放在累加器中;(4)移出乘数的次低位Y1, 乘以被乘数X得到第2个部分积S0;(5)第2个部分积S0 再与累加器S中高4位相加,结果仍然存放在累加器中,即S<=S+S0;……如此反复直到乘数中所有的位都被移出,第4个部分和与累加器中的值相加后右移,得到的和就是乘积。

算法2的流程图如下图4.1所示:在本实验中将设计一个如下图4.2所示的4位乘法器,输入信号X和Y分别是4位乘数和被乘数Y,CLK为输入时钟信号,START 是乘法启动信号。

河南工业大学EDA技术 实验报告实验五 用LPM设计8位数控分频器和4位乘法器

河南工业大学EDA技术 实验报告实验五  用LPM设计8位数控分频器和4位乘法器

河南工业大学EDA技术实验报告专业电科班级姓名学号 2 实验地点6526+ 6215 实验日期-11-4 成绩评定一、实验项目实验五用LPM设计8位数控分频器和4位乘法器二、实验目的掌握LPM模块的参数设置方法以及设计和应用方法。

三、实验原理对于高速测控系统,影响测控速度最大的因素可能是,在测得必要的数据并经过复杂的运算后,才能发出控制指令。

因此数据的运算速度决定了此系统的工作速度。

为了提高运算速度,可以用多种方法来解决,如高速计算机、纯硬件电路、ROM查表式运算器等。

用高速计算机属于软件解决方案,用纯硬件运算器属于硬件解决方案,而ROM属于查表式运算解决方案。

数控分频器的功能要求为:若在其输入端给定不同的数据,其输出脉冲具有相应的对输入时钟的分频比。

设计流程是首先按照原理图输入的设计步骤,通过元件输入窗在原理图编辑窗中调入兆功能块,并按图连接起来,其中计数器LPM-COUNTER模块的参数设置可按照以下介绍的方法进行。

硬件乘法器有多种实现方法,相比之下,由高速RAM构成乘法表方式的乘法表方式的乘法器的运算速度最快。

8位数控分频器电路原理图用LPM_ROM设计的4位乘法器原理图DFF的VHDL代码:(1)8位数控分频器数控分频器的功能要求为:若在其输入端给定不同的数据,其输出脉冲具有相应的对输入时钟的分频比。

(2)4位乘法器硬件乘法器有多种实现方法,相比之下,由高速RAM构成乘法表方式的乘法表方式的乘法器的运算速度最快。

一个4×4bit查表式乘法器乘法表文件如下图所示;四、仿真结果及分析下图即为8位数控分频器的仿真结果,仿真参数设置时具体设置界面如下图所示,波形图如图;下图即为乘法器的仿真结果,仿真参数设置时具体设置界面如下图所示;五、硬件验证过程及结果分析数控分频器的硬件验证时通过数码管来观察分频器的数据变化情况。

4位乘法器的硬件测试引脚并连接至插槽,通过数码管来观察数据相乘后的结果。

基于EDA的4位乘法器的设计

基于EDA的4位乘法器的设计

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。

4乘4位阵列乘法器设计

4乘4位阵列乘法器设计

课程设计报告课程设计题目:4乘4位阵列乘法器设计学生姓名:杨博闻学号:201120070115专业:计算机科学与技术班级: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 软件。

安装完成后,桌面和开始菜单中则建有ispDesignEXPERT 软件图标。

数电课程设计四位二进制乘法器的设计与实现

数电课程设计四位二进制乘法器的设计与实现

四位二进制乘法器的设计与实现物理系光信息科学与技术专业1011202班 11011202181. 实验目的设计一个乘法器,实现两个四位二进制数的乘法。

两个二进制数分别是被乘数3210A A A A 和乘数3210B B B B 。

被乘数和乘数这两个二进制数分别由高低电平给出。

乘法运算的结果即乘积由两个数码管显示。

其中显示低位的数码管是十进制的;显示高位的数码管是二进制的,每位高位片的示数都要乘以16再与低位片相加。

所得的和即是被乘数和乘数的乘积。

做到保持乘积、输出乘积,即认为目的实现,结束运算。

2.总体设计方案或技术路线总体思路:将乘法运算分解为加法运算。

被乘数循环相加,循环的次数是乘数。

加法运算利用双四位二进制加法器74LS283实现,循环次数的控制利用计数器74LS161、数码74LS85比较器实现。

运算结果的显示有数码管完成,显示数字的高位(进位信号)由计数器74LS161控制。

技术路线:以54 为例。

被乘数3210A A A A 是5,输入0101;乘数3210B B B B 是4,输入0100.将3210A A A A 输入到加法器的A 端,与B 端的二进制数相加,输出的和被送入74LS161的置数端(把这个计数器成为“置数器”)。

当时钟来临,另一个74LS161(被称之为“计数器”)计1,“置数器”置数,返回到加法器的B 端,再与被乘数3210A A A A 相加……当循环相加到第四个时钟的时候,“计数器”计4,这个4在数码比较器74LS85上与乘数3210B B B B 比较,结果是相等,A=B 端输出1,经过反相器后变为0返回到被乘数输入电路,截断与门。

至此,被乘数变为0000,即便是再循环相加,和也不变。

这个和,是多次循环相加的和,就是乘积。

高位显示电路较为独立,当加法器产生了进位信号,CA 端输出了一个高电平脉冲,经过非门变为下降脉冲驱动74LS161计一次数,这个数可以通过数码管显示出来。

4位二进制乘法器

4位二进制乘法器

4位二进制乘法器的设计一、概述4位二进制乘法器在实际中的应用相当广泛,是一些计算器的基本组成部分,其原理适用于很多计算器和大型计算机,它涉及到时序逻辑电路如何设计、分析和工作等方面。

通过此电路更深刻的了解时序逻辑部件的工作原理,从而掌握如何根据需要设计满足要求的各种电路图,解决生活中的实际问题,将所学知识应用于实践中。

根据任务书设计电路主要要求是:绘制出电路的原理图,并且诠释每部分的功能;根据设计的电路图分析所需要元器件种类和个数;根据技术指标制定实验方案,验证所设计的电路;进行实验数据处理和分析。

设计任务技术指标;输入数据:被乘数X(0000~1111);乘数Y(0000~1111);输入命令:启动信号S1,高有效。

输出数据:乘积C(00000000~11100001);其乘积可以存贮。

二、方案说明此方案采用74LS194双向移位寄存器,74LS283加法器和 74LS00、74LS04等门电路。

乘法就是反复进行移位和加法,被乘数放入MD寄存器,乘数放入MQ 寄存器,A寄存器中放结果,乘数的位数放在C寄存器中。

AC寄存器的初值为0。

A寄存器的内容被右移时,最高位移入0,其最低位内容被移入MQ的最高位。

C 寄存器右移时,其最高位移入1。

若MQ寄存器的最低位(用M(0)来表示)为1时,将被乘数与A寄存器中的内容用全加器相加后,将结果放回A寄存器中保存。

若M(0)的值为0,将0与A寄存器的内容相加,将其结果再存入A寄存器。

接着,将A、MQ、C寄存器的内容右移1位。

将此动作反复进行乘数位数那么多遍。

此乘法电路通过同步电路操作,运算与时钟脉冲同步进行。

从以上方案中可知,方案设有信号发生电路,数据输入电路,移位寄存电路,加法电路和运算结束判断电路和启动电路。

各部分功能明确且之间的联系容易理解,所以采用这种方案。

原理框图如图1所示。

1图1 4位二进制乘法器电路的原理框图三、电路设计1. 信号发生电路因为A 寄存器起着存储并移位的作用,所以它的时钟信号频率应为主时钟频率的2倍,占空比相同且都大于50%,如图2信号发生电路。

四位数字乘法器的设计

四位数字乘法器的设计

摘要现代社会在飞速发展,科学技术的发展越来越快。

4位二进制乘法器在十几种的应用相当广泛,是一些计算器的基本组成部分,其远离适用于很多计算器和大型计算机,他涉及到实训逻辑电路如何设计。

分析和工作等方面。

通过次电路更深刻的了解时许逻辑不见的工作原理,从而掌握如何根据需要设计满足要求的各种电路图,解决生活中的实际问题,将知识应用于实践中。

根据课题研究的目地是,绘制出电路的原理图,并且诠释每部分的功能;根据设计的电路图分析所需要的元器件种类和个数;根据技术指标指定实验反感,验证所设计的电路;进行实验数据处理和分析。

研究此课题,目地在于使我们了解4位乘法器在实际中的应用,了解它的具体工作原理以及它的基本电路图,使我们以后可以应用它解决一些实际问题。

通过对4位乘法器的设计,让我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己实际动手能力和独立思考的能力。

关键词:乘法器;VHDL;Max+plusII仿真4*4数字乘法器设计1.设计任务试设计一4位二进制乘法器。

4位二进制乘法器的顶层符号图如图1所示。

ENDP A B START1 0 1 11 1 0 1×1 0 1 10 0 0 01 0 1 11 0 1 111011001图1 4位乘法器顶层符号图 图2 4位乘法运算过程输入信号:4位被乘数A (A 3 A 2 A 1 A 0),4位乘数B (B 3 B 2 B 1 B 0),启动信号START 。

输出信号:8位乘积P (P 7 P 6 P 5 P 4 P 3 P 2 P 1 P 0),结束信号END 。

当发出一个高电平的START 信号以后,乘法器开始乘法运算,运算完成以后发出高电平的END 信号。

2.顶层原理图设计从乘法器的顶层符号图可知,这是一个9输入9输出的逻辑电路。

一种设计思想是把设计对象看作一个不可分割的整体,采用数字电路常规的设计方法进行设计,先列出真值表,然后写出逻辑表达式,最后画出逻辑图。

EDA技术及应用课程设计--三位十进制计数器交通灯控制器四位移位乘法器

EDA技术及应用课程设计--三位十进制计数器交通灯控制器四位移位乘法器

设计一三位十进制计数显示器一、课设目的①学习时序电路中多进程的VHDL描述方法。

②掌握层次化设计方法。

③熟悉EDA的仿真分析和硬件测试技术。

二、设计内容设计一个三位十进制计数器,对计数器相关的理论进行分析、归纳和总结;三位十进制计数器的结构组成及原理分析。

程序代码;给出程序中主要函数或者语句的功能说明和使用说明;给出程序仿真运行结果和图表、以及实验结果分析和总结。

三、课设原理计数器是在数字系统中使用最多的时序电路,它不仅能用于对时钟脉冲计数,还可以用于分频,定时,产生节拍脉冲和脉冲序列以及进行数学运算等,计数器是一个典型的时序电路,分析计数器就能更好地了解时序电路的特性。

3位十进制计数显示器的设计分位3个步骤,先设计3位十进制计数电路,再设计显示译码电路,最后建立一个顶层文件将二者连接起来。

三位十进制计数器VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT3 ISPORT(CLK,RESET,CIN:IN STD_LOGIC;CO:OUT STD_LOGIC;A,B,C:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COUNT3;ARCHITECTURE ART OF COUNT3 ISSIGNAL AP,BP,CP:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINKK1:PROCESS(CLK) ISBEGINIF CLK'EVENT AND CLK='1' THENIF RESET='0' THENAP<="0000";ELSIF CIN='1' THENIF AP="1001" THENAP<="0000";ELSEAP<=AP+'1';END IF;END IF;END IF;END PROCESS KK1;KK2:PROCESS(CLK) ISBEGINIF CLK'EVENT AND CLK='1' THENIF RESET='0' THENBP<="0000";ELSIF CIN='1' AND AP="1001" THENIF BP="1001" THENBP<="0000";ELSEBP<=BP+'1';END IF;END IF;END IF;END PROCESS KK2;KK3:PROCESS(CLK) ISBEGINIF CLK'EVENT AND CLK='1' THENIF RESET='0' THENCP<="0000";ELSIF CIN='1' AND AP="1001" and BP="1001" THENIF CP="1001" thenCP<="0000";ELSECP<=CP+'1';END IF;END IF;END IF;END PROCESS KK3;PROCESS(AP,BP,CP) ISBEGINif (AP="1001" AND BP="1001" AND CP="1001") THENCO<='1';ELSECO<='0';END IF;END PROCESS;A<=AP;B<=BP;C<=CP;END ART;显示译码器VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY YIMA7 ISPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);YIMA:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END YIMA7;ARCHITECTURE ART OF YIMA7 ISBEGINPROCESS(A) ISBEGINCASE (A) ISWHEN "0000"=>YIMA<="1000000";WHEN "0001"=>YIMA<="1111001";WHEN "0010"=>YIMA<="0100100";WHEN "0011"=>YIMA<="0110000";WHEN "0100"=>YIMA<="0011001";WHEN "0101"=>YIMA<="0010010";WHEN "0110"=>YIMA<="0000010";WHEN "0111"=>YIMA<="1111000";WHEN "1000"=>YIMA<="0000000";WHEN "1001"=>YIMA<="0010000";WHEN OTHERS=>YIMA<="1111111";END CASE;END PROCESS;END ART;顶层文件VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY JISHUXIANSHI ISPORT(CLK,RESET,EN:STD_LOGIC;BEEP:OUT STD_LOGIC;SEG1,SEG2,SEG3:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END JISHUXIANSHI;ARCHITECTURE ART OF JISHUXIANSHI ISCOMPONENT YIMA7PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);YIMA:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT;COMPONENT COUNT3PORT(CLK,RESET,CIN:IN STD_LOGIC;CO:OUT STD_LOGIC;A,B,C:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNAL IN_A,IN_B,IN_C:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU0:COUNT3 PORT MAP(CLK,RESET,EN,BEEP,IN_A,IN_B,IN_C);U1:YIMA7 PORT MAP(IN_A,SEG1);U2:YIMA7 PORT MAP(IN_B,SEG2);U3:YIMA7 PORT MAP(IN_C,SEG3);END ART;三、上机调试过程:图1如图一所示:该工程已经编译成功,没有出现错误,并且已经生成了JED文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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。

相关文档
最新文档