当前位置:文档之家› 8位十进制乘法器

8位十进制乘法器

8位十进制乘法器
8位十进制乘法器

XX 学院课程论文

(2012 -2013学年第一学期)

课程论文题目:8位乘法器的设计学生姓名:

EDA期末考试

设计报告

设计题目:8位乘法器的设计学校:XX学院

系别:电子信息工程系

班别:10电本2班

姓名:XXX

学号:

组员:

指导老师:

摘要:本设计通过对一个8×8的二进制乘法器的设计。在此次设计

中该乘法器是由十进制计数器、BCD码(输入)转二进制码、8位寄

存器、8位加法器、 16位寄存器、8x1乘法器、二进制码转BCD码

(输出显示)7个模块构成的以时序方式设计的8位乘法器,采用逐

项移位相加的方法来实现相乘。设计中乘数,被乘数的十位和个位

分别采用cnt10(十进制加法器)来输入,经拼接符“&”拼接成8

位BCD码,再由BCD_B(BCD码转二进制码)转化成二进制码后计算,

计算结果由B_BCD(二进制转BCD码)转化成BCD码输入到数码管中显

示。

关键词:VHDL语言、十进制计数器、BCD码转二进制码、8位寄

存器、8位加法器、16位寄存器、8x1乘法器、二进制转BCD码

一、设计功能要求

能设置输入两个乘数(十进制),按操作键后以十进制的方式显示乘积。二、设计原理

本设计中该乘法器是由十进制计数器,BCD码(输入)转二进制码,8位寄存器,8位加法器, 16位寄存器,8x1乘法器,二进制码转BCD码(输出显示)7个模块构成的以时序方式设计的8位乘法器,采用逐项移位相加的方法来实现相乘。设计中乘数,被乘数的十位和个位分别采用cnt10(十进制加法器)来输入,经拼接符“&”拼接成8位BCD码,再由BCD_B(BCD码转二进制码)

转化成二进制码后计算,计算结果由B_BCD(二进制转BCD码)转化成BCD码输入到数码管中显示。使用中只要输入乘数,被乘数,按下键3(脉冲)就可以直接得出结果,显示结果稳定。可以满足两位十进制乘法的计算。

三、整体结构图:输出高八位

四、设计步骤:

4.1 利用VHDL语言来实现各个结构模块,其实现的用途及功能如下:

1. 十进制计算模块:使用4个十进制计数模块,输入乘数的十位个位,被乘数的十位个位。

2. BCD码转二进制模块:实现将输入的8位BCD码转化成二进制

3. 8位右移寄存器模块:将乘法运算中的被乘数加载于其中,同时进行乘法

运算的移位操作。

4. 8位加法器模块:进行操作数的加法运算。

5. 1位乘法器模块:完成8位与1位的乘法运算。

6. 16位锁存器模块:这是一个16位锁存器,同时也是一个右移寄存器,在时钟信号的控制下完成输入数值的锁存与移位。

7. 二进制转BCD码模块:将16位寄存器的值(积)转化成BCD码,配合数码管显示

4.2 利用VHDL语言来实现各个结构模块如下:

4.2.1十进制加计数器设计:

十进制计数器在每个时钟来临时计数,clk=1时清零,用于输入乘数,被乘数的个位,十位。

Library ieee; --使用ieee设计库--0到9计数器

Use ieee.std_logic_unsigned.all; - --允许用户对操作符重新定义

Use ieee.std_logic_1164.all; -- 使用std_logic_1164 程序包

Entity cnt10 is -- 实体名cnt10

Port (clk,clr: in std_logic; --clk时钟频率,rst清零

q: out std_logic_vector(3 downto 0)); --四位输出

end cnt10;

architecture behav of cnt10 is -- 结构体名behav

begin

process(clk,clr) –-时钟,清零为敏感信号

variable cqi: std_logic_vector(3 downto 0); --定义计数器

begin

if clr='1' then cqi:="0000"; --如果clr='1',则cqi:="0000"

elsif clk'event and clk='1' then----否则,若clk为上升沿,即上升沿触发if cqi=9 then cqi:="0000";--如果cqi=9,则cqi:="0000"

else cqi:=cqi+1; --否则cqi自加1

end if;

end if;

q<=cqi; 输出

end process;

end behav;

编译cnt10.vhd生成原理图文件,如下图:

图1 cnt10封装图

4.2.2 BCD码转二进制码BCD_B的设计:

将十进制计数器产生的十位和个位合并后,为BCD码,而计算时使用二进制码计算,所以采用该模块来转化。

Library ieee; --使用ieee设计库--(0到99)BCD码转二进制码Use ieee.std_logic_unsigned.all;-- 允许用户对操作符重新定义

Use ieee.std_logic_1164.all; -- 使用std_logic_1164 程序包

Entity BCD_B is --实体名BCD_B

Port ( a: in std_logic_vector(7 downto 0); --输入8位

q: out std_logic_vector(7 downto 0)); --输出8位

end BCD_B;

architecture behav of BCD_B is --结构体名behav

signal a1,a2,a3,a4,cq: std_logic_vector(7 downto 0);--定义四个内部信号

begin

process(a)--a为敏感信号

begin

a1<="0000"&a(3 downto 0); --"0000"与a的低四位连接

a2<="0000"&a(7 downto 4); --"0000"与a的高四位连接

a3<=a2(6 downto 0)&'0'; --a2的0位到6位与'0'连接

a4<=a2(4 downto 0)&"000";--a2的0位到4位与"000"连接

cq<=a4+a3+a1;--赋值

q<=cq; --输出

end process;

end behav;

编译BCD_B.vhd生成原理图文件,如下图

图2 BCD_B封装图

4.2.3 8位移位寄存器reg_8的设计:

8位移位寄存器是在时钟(r8_clk'event and r8_clk='1')信号作用下,当r8_load='1'时,将8位乘数加载进入;而当r8_load='0'时,对数据进行移位操作,同时定义一个信号reg8用来装载新数据及移位后的操作数,完成这些操

作后,寄存器的最低位reg8(0)传送给r8_out输出。

library ieee; --使用ieee设计库---8位移位寄存器

use ieee.std_logic_1164.all;--使用std_logic_1164 程序包

use ieee.std_logic_unsigned.all;-- 允许用户对操作符重新定义

use ieee.std_logic_arith.all;--定义了相关的算术运算符和数据类型转换函数entity reg_8 is --实体名reg_8

port(r8_clk,clr,r8_load:in std_logic;

r8_in:in std_logic_vector(7 downto 0); --输入端口

r8_out:out std_logic); --输出端口

end reg_8;

architecture arc_reg_8 of reg_8 is --结构体名arc_reg_8

signal reg8:std_logic_vector(7 downto 0); --定义一个内部信号,其位宽为8位

begin

process(r8_clk,clr,r8_load)----三个敏感信号

begin

if clr='1'then

reg8<="00000000";--如果clr='1,则执行reg8<="00000000"

elsif r8_clk'event and r8_clk='1' then-- 否则,若r8_clk为上升沿,即上升沿触发

if r8_load='1' then

reg8<=r8_in;--如果r8_load='1',则执行reg8<=r8_in

else

reg8(6 downto 0)<=reg8(7 downto 1); --否则执行

end if; -- reg8(6 downto 0)<=reg8(7 downto 1) end if;

end process;

r8_out<=reg8(0); --输出

end arc_reg_8;

编译reg_8.vhd生成原理图文件,如下图:

图3 reg_8封装图

4.2.4 8位加法器adder_8的设计:

该加法器由八位二进制加法器组成。其中设计八位二进制加法器时,为了避免加法运算时产生溢出,故定义了三个信号量ss,aa,bb,将加数a8_a,a8_b分别与0连接后赋值给aa,bb,形成9位二进制数,然后aa,bb相加赋值给ss,最后将ss的低八位赋值给和a8_s,同时将ss的最高位送给a8_out输出。library ieee; --使用ieee设计库--8位加法器

use ieee.std_logic_1164.all----使用std_logic_1164程序包;

use ieee.std_logic_unsigned.all;-- 允许用户对操作符重新定义

use ieee.std_logic_arith.all;-- 定义了相关的算术运算符和数据类型转换函数entity adder_8 is --实体名adder_8

port(a8_a,a8_b:in std_logic_vector(7 downto 0);--定义两个输入端口

a8_s:out std_logic_vector(7 downto 0);--定义输出端口

a8_out:out std_logic);--定义输出端口

end adder_8;

architecture arc_adder_8 of adder_8 is --结构体名arc_adder_8

signal ss:std_logic_vector(8 downto 0); --定义一个内部信号signal aa,bb:std_logic_vector(8 downto 0);--定义两个内部信号

begin

aa<='0'&a8_a; bb<='0'&a8_b; ss<=aa+bb;

a8_s<=ss(7 downto 0);

a8_out<=ss(8);

end arc_adder_8;

编译adder_8.vhd生成原理图文件,如下图:

图4 adder_8封装图

4.2.5 1位乘法器multi_1的设计:

利用if语句来完成8位二进制数与1位二进制的乘法运算,最后将结果送到m1_out输出。即当m1_x为1时,m1_out输出为m1_y;当m1_x为0时,m1_out输出全为零。

library ieee; --使用ieee设计库--1位乘法器

use ieee.std_logic_1164.all;--使用std_logic_1164程序包

use ieee.std_logic_unsigned.all;-- 允许用户对操作符重新定义

use ieee.std_logic_arith.all;-- 定义了相关的算术运算符和数据类型转换函数entity multi_1 is --实体名multi_1

port(m1_x:in std_logic;

m1_y:in std_logic_vector(7 downto 0);---输入

m1_out:out std_logic_vector(7 downto 0));---输出

end multi_1;

architecture arc_multi_1 of multi_1 is ---结构体名arc_multi_1

begin

process(m1_x,m1_y)---两个敏感信号

begin

if m1_x='1' then m1_out<=m1_y;--如果m1_x='1'则执行m1_out<=m1_y else m1_out<="00000000";--否则执行m1_out<="00000000"

end if;

end process;

end arc_multi_1;

编译multi_1.vhd生成原理图文件,如下图:

图5 multi_1封装图

4.2.6 16位移位寄存器reg_16的设计:

当清零信号(clr='1')到来时,定义信号变量reg_16归零;信号(r16_clr='1')到来时,定义信号变量reg16清零;否则在时钟信号r16_clk上升沿到来时,将reg16的低8位进行移位操作,同时将8位的数据输入r16_in锁存到reg16的高8位,最后赋值给r16_out输出,cout控制位输出1。

library ieee; -- 使用ieee设计库-- 16位移位寄存器

use ieee.std_logic_1164.all;--使用std_logic_1164程序包

use ieee.std_logic_unsigned.all;-- 允许用户对操作符重新定义

use ieee.std_logic_arith.all;-- 定义了相关的算术运算符和数据类型转换函数entity reg_16 is --实体名reg_16

port(r16_clk,clr,r16_clr:in std_logic;

r16_in:in std_logic_vector(8 downto 0);---输入

cout:out std_logic;--定义进位信号

r16_out:out std_logic_vector(15 downto 0));---输出

end reg_16;

architecture arc_reg_16 of reg_16 is --结构体名arc_reg_16

signal reg16:std_logic_vector(15 downto 0); --定义内部信号reg16,位宽为16位

signal i: std_logic_vector(3 downto 0);--定义内部信号i,位宽为4位

begin

process(r16_clk,r16_clr) --两个敏感信号

begin --当清零信号(clr='1')到来时

if clr='1'then cout<='0';reg16<="0000000000000000";--定义信号变量reg_16归零

elsif r16_clr='1' then --否则信号(r16_clr='1')到来时

reg16<="0000000000000000"; cout<='0';i<="0000";-定义信号变量reg16清零

elsif r16_clk'event and r16_clk='1' then --时钟信号r16_clk上升沿到来时

if (i="1000") then reg16<=reg16;cout<='1';

else

reg16(6 downto 0)<=reg16(7 downto 1);

reg16(15 downto 7)<=r16_in;

i<=i+1;

end if;

end if;

end process;

r16_out<=reg16; --r16_out输出

end arc_reg_16;编译reg_16.vhd生成原理图文件,如下图:

图6 reg_16封装图

4.2.7 16位二进制转BCD码B_BCD的设计:

当reg_16乘积结束时,cout输出1,为B_BCD的使能信号,r16_out为B_BCD 的输入信号,随着时钟上升沿的到来,开始转化,16个周期后完成16为二进制码到BCD码的转化,输出接数码管显示

Library ieee; ---使用ieee设计库--16位二进制转BCD码(0到9999)Use ieee.std_logic_unsigned.all;--- 允许用户对操作符重新定义

Use ieee.std_logic_1164.all; ---使用std_logic_1164程序包

Entity B_BCD is ---实体名B_BCD

Port ( clk,ena:in std_logic;--- clk时钟,ena使能

a: in std_logic_vector(15 downto 0);---输入端口

q: out std_logic_vector(15 downto 0));--输出端口

end B_BCD;

architecture behav of B_BCD is ---结构体名behav

begin

process(clk,a) ---敏感信号clk,a

variable i: std_logic_vector(4 downto 0);

variable in_a,out_a :std_logic_vector(15 downto 0);

begin

if ena='0'then

in_a:=a; i:="00000"; out_a:="0000000000000000";

elsif clk'event and clk='1' then

if i="10000" then out_a:=out_a;

else out_a:=out_a(14 downto 0)&in_a(15);

in_a:=in_a(14 downto 0)&'0';

i:=i+1;

if i<"10000" then-检查半字节+3 是否大于7,也就是检查半字节是否大于 4

if out_a( 3 downto 0)>4 then out_a( 3 downto 0):=out_a( 3 downto 0)+3;

end if; --如果大于4加 3

if out_a( 7 downto 4)>4 then out_a( 7 downto 4):=out_a( 7 downto 4)+3;

end if;

if out_a(11 downto 8)>4 then out_a(11 downto 8):=out_a(11 downto 8)+3;

end if;

if out_a(15 downto 12)>4 then out_a(15 downto 12):=out_a(15 downto 12)+3;

end if;

end if; end if; end if ;

q<=out_a;

end process; end behav;

编译B_BCD.vhd生成原理图文件,如下图:

图7 B_BCD封装图

4.2.8 8位乘法器的顶层设计:

当输入a,b后,随着STAR上升沿到来,将乘数a锁存到REG_8中,同时将16位的移位寄存器REG_16清零,然后随着时钟CLK上升沿的到来,对REG_8中的乘数进行移位操作,最低位在前,由低到高逐位输出。1位乘法器中进行与8位被乘数的相乘运算,并与锁存在16位寄存器reg_16中的高8位进行相加,其和(包含进位)在下一个时钟的上升沿到来时锁存到16位寄存器中。如此进行直到第八个时钟上升沿到来时,reg_16的输出即为所求的乘积,此时reg_16输出端cout输出高电平,B_BCD使能端有效,随着时钟的到来后,开始二进制到BCD码的转化,16个时钟后转化完成,输出结果。由(clr)清零端归零后,可以进行下一次的计算。

其顶层程序如下:

library ieee;---使用ieee设计库

use ieee.std_logic_1164.all;---使用std_logic_1164程序包

use ieee.std_logic_unsigned.all;---允许用户对操作符重新定义

use ieee.std_logic_arith.all;---定义了相关的算术运算符和数据类型转换函数

entity multi_8x8 is

port(clk,clk_a1,clk_a0,clk_b1,clk_b0,clr,start:in std_logic;--7个输入

out_a1,out_a0,out_b1,out_b0: buffer std_logic_vector(3 downto 0);4个输出

result: out std_logic_vector(15 downto 0));---结果输出end multi_8x8;

architecture arc_multi_8x8 of multi_8x8 is --结构体名arc_multi_8x8

component cnt10 --调用0到9计数器声明

Port (clk,clr: in std_logic;

q: out std_logic_vector(3 downto 0));

end component;

4FPGA实验报告8位乘法器—徐艺萍

实验四8位乘法器实验 一、实验原理 8位乘法器,输入为两个8位信号,输出结果为16位。 module mult8(out, a, b); //8位乘法器源代码 parameter size=8; input[size-1:0] a,b; //两个操作数 output[2*size-1:0] out; //结果 assign out=a*b; //乘法运算符 endmodule 本实验采用Chipscope-Pro生成VIO/ICON核,并插入到8位乘法器设计中,在线进行观测和调试。 二、实验目的 1. 熟悉ISE9.1 开发环境,掌握工程的生成方法; 2. 熟悉SEED-XDTK XUPV2Pro 实验环境; 3. 了解Verilog HDL语言在FPGA 中的使用; 4. 通过掌握8位乘法器的Verilog HDL设计,了解数字电路的设计。 三、实验内容 1. 用Verilog HDL语言设计8位乘法器,进行功能仿真验证。 2. 使用chipscope-Pro 生成VIO/ICON 核,在线观测调试。 四、实验准备 1. 将USB 下载电缆与计算机及XUPV2Pro 板的J8 连接好; 2. 将RS232 串口线一端与计算机连接好,另一端与板卡的J11 相连接; 3. 启动计算机,当计算机启动后,将XUPV2Pro 板的电源开关SW11 打开到ON 上。观察XUPV2Pro 板上的+2.5V,+3.3V,+1.5V 的电源指示灯是否均亮。若有不亮的,请断开电源,检查电源。

五、实验步骤 ⑴创建工程及设计输入 ①在E:\project\目录下,新建名为mult8的新工程; 器件族类型(Device Family)选择“Virtex2P”, 器件型号(Device)选“XC2VP30 ff896 -7”, 综合工具(Synthesis Tool)选“XST (VHDL/Verilog)”, 仿真器(Simulator)选“ISE Simulator” ②设计输入并保存。 ⑵功能仿真 ①在sources窗口sources for中选择Behavioral Simulation。 ②由Test Bench WaveForm 添加激励源,如图1所示。仿真结果如图2所示。 图1 波形激励编辑窗口 图2 仿真结果 从图中可以验证由Verilog HDL语言设计的8位乘法器的工作是正确的,不论是输入a的值变化还是输入b的值变化,输出值随之变化,为a与b的乘积。 ⑶生成核并添加核 本次试验内容为8位乘法器,不需要使用ILA核。因此下面使用核生成法生成一个ICON核,一个VIO核就可以了。 ①首先对生成的工程进行综合。 ②生成核 ③添加核

2位十进制高精度数字频率计设计

广州大学学生实验报告 实验室:电子信息楼 317EDA 2017 年 10 月 2 日 学院机电学院年级、专 业、班 电信 151 姓名苏伟强学号1507400051 实验课 程名称 可编程逻辑器件及硬件描述语言实验成绩 实验项 目名称 实验4 2位十进制高精度数字频率计设计指导老师 秦剑 一实验目的 1 熟悉原理图输入法中74系列等宏功能元件的使用方法,掌握更复杂的原理图层次化设计技术和数字系统设计方法。 2 完成2位十进制频率计的设计,学会利用实验系统上的FPGA/CPLD验证较复杂设计项目的方法。 二实验原理 1 若某一信号在T秒时间里重复变化了N 次,则根据频率的定义可知该信号的频率fs 为:fs=N/T 通常测量时间T取1秒或它的十进制时间。 三实验设备 1 FPGA 实验箱,quarteus软件 四实验内容和结果 1 2位十进制计数器设计 1.1 设计原理图:新建quarteus工程,新建block diagram/schematic File文件,绘制原理图,命名为conter8,如图1,保存,编译,注意:ql[3..0]输出的低4位(十进制的个位), qh[3..0]输出的高4位(十进制的十位) 图片11.2 系统仿真:如图2建立波形图进行波形仿真,如图可以看到完全符合设计要求,当clk输入时钟信号时,clr有清零功能,当enb高电平时允许计数,低电平禁止计数,当低4位计数到9时向高4位进1 图2 1.3 生成元件符号:File->create/updata->create symbol file for current file,保存,命名为conter8,如图3为元件符号(block symbol file 文件): 图3 2 频率计主结构电路设计 2.1 绘制原理图:关闭原理的工程,新建工程,命名为ft_top,新建原理图文件,在project navigator的file 选项卡,右键file->add file to the project->libraries->project library name添加之前conters8工程的目录在该目录下,这样做的目的是因为我们会用到里面的conters8进行原理图绘制,绘制原理图,如图4,为了显示更多的过程信息,我们将74374的输出也作为output,重新绘制了原理图,图5 图4

实验三 8位乘法器的设计

实验三8位乘法器的设计 一、实验目的 1)了解8位乘法器的工作原理 2)熟悉MAX+plusII软件的基本使用方法 3)熟悉EDA实验开发的基本使用方法 4)学习VHDL程序中数据对象,数据类型,顺序语句,并行语句的综合使用 二、实验内容 设计一个由8位加法器构成的以时序逻辑方式设计的8位乘法器。其乘法原理是:乘法通过逐项位移相加原理来实现,以被乘数的最低位开始,若为1,则乘数左移后与上一次和相加,若为0,左移后以全零相加,直至被乘数的最高位。 三、实验条件 开发软件:MAX+plus II 9.23 Baseline 硬件设备:装有windows7的pc机 四、实验设计 1)系统的原理框架图

2)VHDL源程序 andarith.vhd源代码 library ieee; use ieee.std_logic_1164.all; entity andarith is port(abin:in std_logic; din:in std_logic_vector(7 downto 0); dout: out std_logic_vector(7 downto 0)); end entity andarith; architecture art of andarith is begin process(abin, din)is begin for i in 0 to 7 loop dout(i)<=din(i)and abin; end loop; end process; end architecture art; arictl.vhd源代码 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity arictl is port(clk:in std_logic; start: in std_logic; clkout:out std_logic; rstall: out std_logic; ariend: out std_logic); end entity arictl; architecture art of arictl is signal cnt4b:std_logic_vector(3 downto 0); begin rstall<=start; process(clk, start)is begin if start='1' then cnt4b<="0000"; elsif clk'event and clk='1'then if cnt4b<8 then cnt4b<=cnt4b+1; end if; end if;

基于FPGA的8位十进制数字频率计设计

宝鸡文理学院学报(自然科学版),第33卷,第1期,第-页,2013年3月 J o u r n a l o f B a o j iU n i v e r s i t y o fA r t s a n dS c i e n c e s (N a t u r a l S c i e n c e ),V o l .33,N o .1,p p .-,M a r .2013D O I :C N K I :61-1290/N. h t t p ://w w w.c n k i .n e t /k c m s /d e t a i l /61.1290.N.基于F P G A 的8位十进制数字频率计设计 *1 韩芝侠 (宝鸡文理学院电子电气工程系,陕西宝鸡721016 )摘 要:目的 研究复杂数字电路在E D A 开发系统上的实现方法。方法 在介绍E D A 特征及设 计方法基础上,针对具体的C P L D /F P G A 开发系统,在Q u a r t u s 环境下设计了一款8位十进制数字频 率计。结果 下载/配置到实验板的目标器件上,经实际电路测试验证,达到了预期的设计要求。结论 与传统设计方法相比, 该方案具有外围电路简单,程序修改灵活和调试容易等特点;设计的数字频率计测量范围大,精度高,读数直观清晰,可用于频率测量、机械转速测量等领域。 关键词:E D A ;C P L D /F P G A ;Q u a r t u s ;数字频率计;复杂数字系统;仿真中图分类号:T P 391.9 文献标志码:A 文章编号:1007-1261(2013)01-0000-04D e s i g no f 8-b i t d e c i m a l s y s t e md i g i t a l f r e q u e n c y m e t e rb a s e do nF P G A HA NZ h i -x i a (D e p t .E l e c t r o n i c s&E l e c t .E n g n .,B a o j iU n i v .A r t s&S c i .,B a o j i 721016,S h a a n x i ,C h i n a )A b s t r a c t :A i m T os t u d i e dt h em e t h o dt or e a l i z ead i g i t a l c i r c u i t i nE D A d e v e l o p m e n t s y s t e m.M e t h o d s B a s e do ni n t r o d u c i n g t h ec h a r a c t e r i s t i c sa n dd e s i g n m e t h o d so fE D A ,t oa i m a ts p e c i f i c C P L D /F P G Ad e v e l o p m e n t s y s t e m ,A8-b i t d e c i m a l s y s t e md i g i t a l f r e q u e n c y m e t e r i s d e s i g n e d i nQ u -a r t u s e n v i r o n m e n t .R e s u l t s I t i sd o w n l o a d /c o n f i g u r a t i o nt o t h e t a r g e td e v i c eo f e x p e r i m e n t a l p l a t e ,a f t e r a c t u a l c i r c u i t t e s t i n g a n dv e r i f y i n g ,t h ee x p e c t e dd e s i g nr e q u i r e m e n t i sa c h i e v e d .C o n c l u s i o n C o m p a r i n g w i t h t r a d i t i o n a l d e s i g nm e t h o d ,t h i s d e s i g nh a s c h a r a c t e r i s t i c s o f s i m p l e p e r i p h e r a l c i r c u i t ,f l e x i b l e p r o g r a m m o d i f i c a t i o nw a y a n d e a s y d e b u g m o d e ;T h i s f r e q u e n c y m e t e r a l s oh a s c h a r a c t e r i s t i c s o fw i d em e a s u r e m e n t r a n g e ,h i g ha c c u r a c y ,c l e a r a n d i n t u i t i v e r e a d i n g ,a n d c a nb e u s e d f o r f r e q u e n c y m e a s u r e m e n t ,m e c h a n i c a l s p e e dm e a s u r e m e n t ,e t c .K e y w o r d s :E D A ;C P L D /F P G A ;Q u a r t u s ;d i g i t a l f r e q u e n c y m e t e r ;c o m p l e xd i g i t a l c i r c u i t ;s i m -u l a t i o n 1 E D A 技术应用 随着计算机技术和集成电路技术的快速发展,电子技术设计面临着复杂度不断提高而设计周期不断缩短的矛盾。为了解决这个问题,就必须采用新的设计方法和使用高层次的设计工具,于是E D A 技术应运而生。E D A 遵循从上到下的设计原则。首先从系统设计入手,在顶层进行功 能划分和结构设计,顶层电路中的每个次层模块均可完成一个较为独立的功能,次模块在调试成 功后可生成一个默认符号,供上一层模块调用。而高密度可编程逻辑器件F P G A 是E D A 设计所必须的一种编程下载技术,具有易失性,每次重新加电,都要重新装入配置数据,突出优点是可反复编程,系统上电时,给F P G A 加载不同的配置数 *收稿日期:2012-09-19,修回日期:2012-10-02 基金项目:宝鸡文理学院科研项目(J G 0831 )作者简介:韩芝侠(1970-),女,陕西扶风人,副教授,硕士,研究方向:检测技术及自动化装置.E m a i l :h a n _z h i _x i a 999@163.c o m 网络出版时间:2012-10-11 17:25 网络出版地址:https://www.doczj.com/doc/e416369311.html,/kcms/detail/61.1290.N.20121011.1725.001.html

移位相加8位乘法器的设计

EDA技术课程大作业 设计题目:移位相加8位乘法器的设计 院系:电子信息与电气工程学院 学生姓名: 学号:200902070017 专业班级:09电子信息工程专升本 2010年12月3日

移位相加8位乘法器的设计 1.设计背景和设计方案 1.1设计背景 EDA技术(即Electronic Design Automation技术)就是依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Ddscription Langurage)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。它在硬件实现方面融合了大规模集成电路制造技术、IC版图设计、ASIC 测试和封装、FPGA(Gield Peogrammable Gate Array)/CPLD(Complex Programmable Logic Device)编程下载和自动测试等技术;在计算机辅助工程方面融合了计算机辅助设计(CAD),计算机辅助制造(CAM),计算机辅助测试(CAT),计算机辅助工程(CAE)技术以及多种计算机语言的设计概念;而在现代电子学方面则容纳了更多的内容,如电子线路设计理论、数字信号处理技术、数字系统建模和优化技术及长线技术理论等。本文介绍设计一个两个5位数相乘的乘法器。用发光二极管显示输入数值,用7段显示器显示十进制结果。乘数和被乘数分两次输入。在输入乘数和被乘数时,要求显示十进制输入数据。输入显示和计算结果显示,采用分时显示方式进行,可参见计算器的显示功能 1.2设计方案 此设计是由八位加法器构成的以时序逻辑方式设计的八位乘法器,它的核心器件是八位加法器,所以关键是设计好八位加法器。 方案一:八位直接宽位加法器,它的速度较快,但十分耗费硬件资源,对于工业化设计是不合理的。 方案二:由两个四位加法器组合八位加法器,其中四位加法器是四位二进制并行加法器,它的原理简单,资源利用率和进位速度方面都比较好。综合各方面的考虑,决定采用方案二。 该乘法器是由8位加法器构成的以时序方式设计的8位乘法器。其乘法原理是乘法通过逐项移位相加原理来实现,从被乘数的最低位开始,若为1,则乘数左移后与上一次的和相加;若为0,左移后以全零相加,直至被乘数的最高位。从

8位二进制乘法器

8位二进制乘EDA实验 法器 学号:02115024 [2013.12.15] 班级:021151 姓名:王浩楠 指导老师:徐少莹

一.设计要求 8位二进制乘法采用移位相加的方法。即用乘数的各位数码,从低位开始依次与被乘数相乘,每相乘一次得到的积称为部分积,将第一次(由乘数最低位与被乘数相乘)得到的部分积右移一位并与第二次得到的部分积相加,将加得的和右移一位再与第三次得到的部分积相加,再将相加的结果右移一位与第四次得到的部分积相加,直到所有的部分积都被加过一次。 例如:11010101和10010011相乘,计算过程如下: 二.设计方法 按照这种算法,可以得到下图所示之框图和简单流程图。按照这种算法,可以得到下图所示之框图和简单流程图。图中Y寄存器存放被乘数M,B寄存器存放乘数N,A累加器存放部分积。A和Y中的数据在加法器中相加后送入A 中,而A和B相级联又构成了一个16bit的移位寄存器,当它工作于移位模式时,可以实现数据的右移。由于乘数的每一位不是0就是1 ,对应的部分积不是0就是被乘数本身,所以实际作部分积相加这一步时,只要根据乘数的对应位判断:如该位为1 ,则将累加器中的数据加上被乘数再移位;如该位为0时,就不加被乘数而直接移位。运算时首先将累加器A清零,并将被乘数M和乘数N分别存入寄存器Y和B,然后依据寄存器B中最右一位B0(数据N0)确定第一个部分积。将此部分积送入A累加器以后,将A连同寄存器B右移一位,部分积的最低位被移进寄存器B的最左位,乘数的最低位N0被移出寄存器B,而乘数的次低位N1被移至寄存器B的B0位。第二次仍然依据B0位的数据(N1)来确定第二个部分积,将部分积与累加器中的数据相加后右移一位,N1又被移出寄存器,数据N2被移到B0位置。。。。。这样,经过8次部分积相加位的操作,完成1次乘法运算,乘数N恰好被移出寄存器B,寄存器B中保存的就是运算积的低8位数据。移位相加的次数应用一个计数器来控制,每移位一次,计数器计一个数。当计数器计得8个数时,发出一个信号,使电路停止操作,并输出运算结果。

八位十进制数字频率计

EDA课程设计报告书 题目:8位十进制数字频率计的设计姓名: 学号: 所属学院: 专业年级: 指导教师: 完成时间:

8位十进制数字频率计的设计 一、设计介绍 数字频率计是采用数字电路制做成的能实现对周期性变化信号频率测量的仪器。频率计主要用于测量正弦波、矩形波、三角波和尖脉冲等周期信号的频率值。其扩展功能可以测量信号的周期和脉冲宽度。通常说的,数字频率计是指电子计数式频率计。频率计主要由四个部分构成:输入电路、时基(T)电路、计数显示电路以及控制电路。在电子技术领域,频率是一个最基本的参数。数字频率计作为一种最基本的测量仪器以其测量精度高、速度快、操作简便、数字显示等特点被广泛应用。许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度等通过传感器转换成信号频率,可用数字频率计来测量。尤其是将数字频率计与微处理器相结合,可实现测量仪器的多功能化、程控化和智能化.随着现代科技的发展,基于数字式频率计组成的各种测量仪器、控制设备、实时监测系统已应用到国际民生的各个方面。 二、设计目的 (1)熟悉Quatus 11软件的基本使用方法。 (2)熟悉EDA实验开发系统的使用方法。 (3)学习时序电路的设计、仿真和硬件设计,进一步熟悉VHDL设计技术。 三、数字频率计的基本原理 数字频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,通常情况下计算每秒待测信号的脉冲个数,此时我们称闸门时间为1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。数字频率计的主要功能是测量周期信号的频率。频率是单位时间(1S)信号发生周期变化的次数。如果我们能在给定的1S时间对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔的脉冲个数,将其换算后显示出来。这就是数字频率计的基本原理。频率计测量频率需要设计整形电路使被测周期性信号整形成脉冲,然后设计计数器对整形后的脉冲在单位时间重复变化的次数进行计数,计数器计出的数字经锁存器锁存后送往译码驱动显示电路用数码管将数字显示出来,需要设计控制电路产生允许产生的门匣信号,计数器的清零信号和锁存器的锁存信号使电路正常工作,再设计一个量程自动转换使测量围更广。 四系统总体框架

四位原码乘法器

1.课程设计的内容和要求 内容:设计四位原码乘法器电路。 要求:1.有关资料,设计乘法器电路; 2.画出乘法器逻辑图; 3.在实验箱上完成乘法器电路的组装,调试,核对记录,测试有关数据, 通过老师当场验收; 4.完成课程设计报告。 1.课程设计原理 运用存储器的存储功能实现数字的存储。令电路的初始状态为000,000,000000。以二进制的形式输入数字,计算方式是以十进制数字乘法。输入的数字为三位数字,输出的是六位数字。先存储输入的乘数和乘积,然后再将乘积的导线端连到输出段,此时之前输入的乘积就可以在输出端显示。 此时序电路的真值表为:

1.课程设计思路 本次课程设计的题目为四位原码乘法器,利用真值表输入乘数时,需要存放数字,于是我查阅了一些资料,用存储器可以实现这一电路,所以本实验中用到的是INTEL 2114芯片。 具体实现过程如下图: a a b b F 32F 1 1.课程设计所需的器材 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导线要先连接电源测试是否导电。 连接好电路进行数据测试,输入001,010,000010,存储;001,101,000101,存储;001,111,000111,存储。将连在输入端的四个输出连接到输出端,并输入001,010,但是结果并不是000010,而是000100;再输入001,101,也没有得到000101的结果,而是000110的结果。检查线路,发现输出的线路错位,纠正后重新输入乘数,结果均得到计算结果。调试成功。 1.实验结果 连接好整个电路。A5A4A3和A2A1A0为输入端,即乘数,F5F4F3F2F1F0为输出端,即乘积。如下表: 8. 课程设计结果 输入000,000,000000,存储;

EDA实习之8位乘法器设计

学号:10446234 常州大学 EDA 技术 课程设计报告 题目:移位相加8位硬件乘法器设计 学生:朱京 学院(系):信息科学与工程学院专业班级:电子102 指导教师:李文杰

一、设计题目移位相加8位硬件乘法器设计 二、设计背景 纯组合逻辑构成的乘法器虽然工作速度比较快,但过于占用硬件资源,难以实现宽位乘法器。基于PLD器件外接ROM九九表的乘法器则无法构成单片系统,也不实用。由8位加法器构成的以时序逻辑方式设计的8位乘法器,具有一定的实用价值。其乘法通过逐项移位相加来实现,从被乘数最低位开始,若为1,则乘数左移后与上次的和相加,若为0,左移后与全0相加,直至被乘数的最高位。 三、设计内容及要求 设计内容: 设计移位相加8位硬件乘法器,完成8位被乘数A[7..0]和8位乘数B[7..0]的乘法运算,得到16位的乘法运算输出DOUT[15..0]。 (1)设计8位移位寄存器SREG8B,当被乘数加载于SREG8B后,随时钟节拍,最低位在前,由低位至高位逐位移出。 (2)设计与门,根据移位寄存器输出是否为1,决定输入加法器的是8位乘数还是全零。 (3)设计8位加法器,将8位乘数或全零与16位锁存器的高8位进行相加。 (4)设计16位锁存器REG16B,在时钟到来时,锁存来自加法器的输出至高8位,并右移低8位。 要求: 1)根据系统设计要求,采用自顶向下的方法,划分系统主要模块,画出整体设计原理框图。 2)根据工作原理、用硬件描述语言对设计内容实现,列出设计程序清单,给出仿真波形图和调试中存在问题及解决方法。 3)设计内容下载至目标芯片,在EDA的GW48型实验箱进行功能验证。 4)谈谈该课题的课程设计中遇到的问题,获得哪些技能和体会,以及建设性意见。 四、设计步骤和安排: (1)题目安排;图书馆查相关资料; (2)设计原理研究,总体设计; (3)各主要模块的VHDL设计。各模块的设计仿真分析。 (4) 完成系统顶层文件设计,系统总体功能的仿真分析。 (5) 将设计内容进行硬件配置,在GW48实验箱上进行调试。 (6) 撰写课程设计报告、答辩并提交报告。

8位十进制频率计_EDA课程设计报告

EDA课程设计报告 名称: 8位十进制频率计 学号: 姓名: 年级专业: 2011级电子信息工程 学院: 物电学院 指导老师: 日期: 2014年6月2日 安徽师范大学物理与电子信息学院 College of Physics and Electronic Information, Anhui Normal University

目录 一、设计目的 (2) 二、设计要求 (2) 三、设计思路 (3) 四、设计原理 (3) 五、设计仿真 (3) 六、实验现象 (4) 七、设计源码 (4) 八、总结 (9) 参考书目 (9) 引言 数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件教多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着现场可编程阵列FPGA的应用,以EDA工具作为开发手段,运用VHDL等硬件描述语言语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。 一、课程设计目的 1)巩固和加深对“EDA技术”、“数字电子技术”的基本知识的理解,提高综合运用本课程所学知识的能力。 2)培养学生根据课题需要选学参考书籍、查阅手册、图表和文献资料的自学能力。通过独立思考,深入钻研相关问题,学会自己分析解决问题的方法。 3)培养硬件设计、软件设计及系统软、硬件调试的基本思路、方法和技巧,并能熟练使用当前较流行的一些有关电路设计与分析的软件和硬件。 二、课程设计要求 1)脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为,f为被测信号的频率,N 为计数器所累积的脉冲个数,T为产生N个脉冲所需的时间。所以,在1秒时间内计数器所记录的结果,就是被测信号的频率。 2)被测频率信号取自实验箱晶体振荡器输出信号,加到主控室的输入端。 3)再取晶体振荡器的另一标准频率信号,经分频后产生各种时基脉冲:1ms,10ms,0.1s,1s等,时基信号的选择可以控制,即量程可以改变。 4)时基信号经控制电路产生闸门信号至主控门,只有在闸门信号采样期间内(时基信号的一个周期),输入信号才通过主控门。 5)f=N/T,改变时基信号的周期T,即可得到不同的测频范围。 6)当主控门关闭时,计数器停止计数,显示器显示记录结果,此时控制电路输出一个置零信号,将计数器和所有触发器复位,为新一次采样做好准备 三、课程设计思路 频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。这就要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。当TSTEN高电平时,允许计数;低电平时,停止计数,并保持其所计的数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B中,并由外部的7段译码器译出并稳定显示。锁存信号之后,必须有一清零信号CLR_CNT对计数器进行清零,为下1秒钟的计数操作作准备。 寄存器REG32B设计要求是:若已有32位BCD码存在于此模块的输入口,在信号LOAD的上升沿后即被锁存到寄存器REG32B内部,并由REG32B的输出端输出,然后由7段译码器译者成能在数码管上显示输出的相应数值。

八位乘法器VHDL及功能模块说明

EDA课程设计报告 实验名称:八位乘法器

目录 一.引言 1.1 EDA技术的概念?? 1.2 EDA技术的特点?? 1.3 EDA设计流程?? 1.4 VHDL介绍?? 二.八位乘法器的设计要求与设计思路??2.1 设计目的?? 2.2 设计要求?? 三.八位乘法器的综合设计?? 3.1 八位乘法器功能?? 3.2 八位乘法器设计方案?? 3.3 八位乘法器实体设计?? 3.4 八位乘法器VHDL设计?? 3. 5八位乘法器仿真图形?? 心得体会?? 参考文献??

一、引言 1.1 EDA技术的概念 EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。 1.2 EDA技术的特点 利用EDA技术进行电子系统的设计,具有以下几个特点:①用软件的方式设计硬件;②用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;③设计过程中可用有关软件进行各种仿真;④系统可现场编程,在线升级;⑤整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。因此,EDA技术是现代电子设计的发展趋势。 1.3 EDA设计流程 典型的EDA设计流程如下: 1、文本/原理图编辑与修改。首先利用EDA工具的文本或图形编辑器将设计者的设计意图用文本或图形方式表达出来。 2、编译。完成设计描述后即可通过编译器进行排错编译,变成特定的文本格式,为下一步的综合做准备。 3、综合。将软件设计与硬件的可实现性挂钩,是将软件转化为硬件电路的关键步骤。 4、行为仿真和功能仿真。利用产生的网表文件进行功能仿真,以便了解设计描述与设计意图的一致性。 5、适配。利用FPGA/CPLD布局布线适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配臵、逻辑分割、逻辑优化、布局布线。适配报告指明了芯片内资源的分配与利用、引脚锁定、设计的布尔方程描述情况。

EDA--八位二进制乘法器

EDA课设: 选题名称:八位二进制乘法电路 (一)设计要求: 分拍输入两个八位二进制数字,并四个数码管显示当前输入数字的十进制形式,通过使能端的控制,分拍输出这两位二进制数字的乘积并通过四个数码管显示成十进制。 (二)基本算法: 8位二进制乘法采用移位相加的方法。即用乘数的各位数码,从低位开始依次与被乘数相乘,每相乘一次得到的积称为部分积,将第一次(由乘数最低位与被乘数相乘)得到的部分积右移一位并与第二次得到的部分积相加,将加得的和右移一位再与第三次得到的部分积相加,再将相加的结果右移一位与第四次得到的部分积相加。直到所有的部分积都被加过一次。 按照这种算法,可以得到下图所示之框图和简单流程图。图中Y寄存器存放被乘数M,B寄存器存放乘数N,A累加器存放部分积。A和Y中的数据在加法器中相加后送入A中,而A和B相级联又构成了一个16bit的移位寄存器,当它工作于移位模式时,可以实现数据的右移。由于乘数的每一位不是0就是1 ,对应的部分积不是0就是被乘数本身,所以实际作部分积相加这一步时,只要根据乘数的对应位判断:如该位为 1 ,则将累加器中的数据加上被乘数再移位;如该位为0时,就不加被乘数而直接移位。运算时首先将累加器A 清零,并将被乘数M和乘数N分别存入寄存器Y和B,然后依据寄

存器B中最右一位B0(数据N0)确定第一个部分积。将此部分积送入A累加器以后,将A连同寄存器B右移一位,部分积的最低位被移进寄存器B的最左位,乘数的最低位N0被移出寄存器B,而乘数的次低位N1被移至寄存器B的B0位。第二次仍然依据B0位的数据(N1)来确定第二个部分积,将部分积与累加器中的数据相加后右移一位,N1又被移出寄存器,数据N2被移到B0位置……这样,经过8次部分积相加位的操作,完成1次乘法运算,乘数N恰好被移出寄存器B,寄存器B中保存的就是运算积的低8位数据。移位相加的次数应用一个计数器来控制,每移位一次,计数器计一个数。当计数器计得8个数时,发出一个信号,使电路停止操作,并输出运算结果(流程图是按减法计数器设计的,也可使用加法计数器)。

最新多功能8位十进制频率计数器的设计

多功能8位十进制频率计数器的设计

多功能8位十进制频率计数器的设计 设计题目:多功能8位十进制计数器的设计学生学号: 08060311205 学生姓名:孔文尧 专业班级:电信 112 指导教师:邓茜

摘要 使用VHDL 语言来设计,画出流程图和仿真图,让设计的电路通过硬件仿真,再在下到相关器件上,指导满足要求,能实现电子自动化的过程。使用该仪器测试所得到的信号的频率,有正弦波,有方波但是其信号必须按周期性变化,否则一定是机器坏了和操作不得当。因此这个毕业设计,不但有力于让数字频率计的功能更强,也可以让成本降低和增加其实际作用。所有的科研院所,学校,实验室,车间等商业机构都使用了大量的数字频率器或其相关产品。因为它的使用性,价格也相当的低廉所以被人们广泛的使用和研究。在这被人们所注意到,而且仿真可以提供更好的测量频率也会让实验的结果更加的精确,他能满足了数字频率计自动清零需求,当然也能满足自动化功能测试要求。 现在我们对他的研究途径它不仅仅在于容易阅读,也在于我可以控制精度,这也是很牛逼的。最重要的是数字频率计,在高科技设备研发和数字卫星领域,数字通信应用等领域中有不俗的贡献。 [关键词]:VHDL 语言仿真频率计数器。

Summary Use c language to design, draw a flowchart and simulation map, so the design of the circuit by hardware emulation, and then next to the relevant device guidance to meet the requirements, to achieve the electronic automated process. Frequency signal obtained by the instrument test with a sine wave, but their well-wave signal must be periodically changed, the machine must be broken and the operation shall not be treated. So this graduation design, not only to make powerful digital frequency meter more powerful, but also allows cost reduction and increase its practical effect. All research institutes, schools, laboratories, workshops and other business organizations are using a lot of digital frequency or its related products. Because of its use, the price is quite low so been widely used and studied. In this been noticed, and simulation can provide better measurement frequency also make experimental results more accurate, he can meet the needs of the digital frequency meter is automatically cleared, of course, but also to meet the requirements of automated functional testing, Now we study the way for him it's not just that it is easy to read, but also that I can control precision, it is also very fast hardware. The most important is the digital frequency meter, high-tech equipment in the field of research and development and digital satellite, digital communications applications in other fields have good contributions. [Keywords]: c language simulation frequency meter.

16位(8x8)硬件乘法器设计报告

EDA课程设计16位(8x8)硬件乘法器设计学校:华侨大学 学院:信息与工程学院 班级:10集成 姓名:项传煜 学号:1015251031 老师:凌朝东

目录 摘要 一.设计要求 二.正文 2.1. 系统设计 2.1.1 系统设计方案 (3) 2.1.2 系统设计原理 (4) 2.2. 各子模块设计 2.2.1 十进制加计数器设计 (5) 2.2.2 BCD码转二进制码BCD_B的设计 (5) 2.2.3 8位移位寄存器reg_8的设计 (6) 2.2.4 8位加法器adder_8的设计 (7) 2.2.5 1位乘法器multi_1的设计 (7) 2.2.6 16位移位寄存器reg_16的设计 (8) 2.2.7 16位二进制转BCD码B_BCD的设计 (9) 2.3. 软件设计 2.3.1 设计平台和开发工具 (10) 2.3.2 程序流程方框图 (10) 2.3.3 实现功能 (11) 2.3.4 8位乘法器的顶层设计 (11) 2.4. 系统测试 2.4.1 乘法器使用 (13) 2.4.2 仪器设备 (13) 2.4.3 测试数据 (14) 2.5. 结论 (14) 三.测试结果仿真图 (14) 四.参考文献 (15) 五.附录:设计说明书及使用说明书 (15)

摘要 本设计通过对一个8×8的二进制乘法器的设计,学习利用VHDL语言来描述简单的算法,掌握利用移位相加方法实现乘法运算的基本原理。在此次设计中该乘法器是由十进制计数器,BCD码(输入)转二进制码,8位寄存器,8位加法器,16位寄存器,8x1乘法器,二进制码转BCD码(输出显示)7个模块构成的以时序方式设计的8位乘法器,采用逐项移位相加的方法来实现相乘。设计中乘数,被乘数的十位和个位分别采用cnt10(十进制加法器)来输入,经拼接符“&”拼接成8位BCD码,再由BCD_B(BCD码转二进制码)转化成二进制码后计算,计算结果由B_BCD(二进制转BCD码)转化成BCD码输入到数码管中显示。此次设计的创新点在于cnt10,BCD_B,B_BCD的设计,使得电路的输入简单,显示方式为十进制,符合人们的习惯。使用中只要输入乘数,被乘数,按下键3(脉冲)就可以直接得出结果,显示结果稳定。可以满足两位十进制乘法的计算。 一.设计要求 设计一个十六位(8*8)硬件乘法器(难度系数1.0) 要求:2位十进制乘法;能同时显示乘数,被乘数和积的信息(LED数码管)。 二.正文 2.1. 系统设计 2.1.1 系统设计方案 方案一:直接生成乘法器,再配合输入,输出电路,构成2位十进制乘法器,该方案简单,原理清晰明了,但占用资源比较多,且不易于了解内部结构,及其乘法原理。 方案二:移位相加方法实现乘法运算再配合输入,输出电路,构成2位十进制乘法器,该方案原理简单,占用资源少,易于初学者掌握移位相加方法实现乘法运算的原理,但电路模块较多。方案选择:由于现在属初学阶段,掌握原理较为重要,故经小组讨论,一致同意采用方案二。

8位乘法器实验报告

6.2 8位乘法器的设计 1.实验目的 (1)熟悉isEXPERT/MAX+plusisEXPERT/MAX+plus II/Foudation Series 软件的基本使用方法。 (2)熟悉GW48-CK EDA实验开发系统的基本使用方法。 (3)学习VHDL基本逻辑电路的综合设计。 2.实验内容 设计并调试好由8位加法器构成的以时序逻辑方式设计的8位乘法器。此乘法器通过判断被乘数的位值为1还是零,并通过乘数的左移与上一次和相加的方法,实现了8位乘法的运算,并用GW48-CK EDA实验开发系统进行硬件验证。 3.实验条件 (1)开发设备:Lattice ispEXPERT。 (2)实验设备:GW48-CK EDA实验开发系统。 (3)拟用芯片:ispLSI1032E PLCC-84或EPF10K10LC84-3或XCS05/XL PLCC84以及运算控制电路和外部时钟。 4.实验设计 1)系统的原理框图

2)VHDL源程序 (1)选通与门模块的源程序ANDARITH.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ANDARITH IS PORT(ABIN: IN STD_LOGIC; DIN: IN STD_LOGIC_VECTOR(7 DOWNTO 0); DOUT: OUT STD_LOGIC_vector(7 DOWNTO 0)); END ENTITY ANDARITH; ARCHITECTURE ART OF ANDARITH IS BEGIN PROCESS(ABIN,DIN)IS BEGIN FOR I IN 0 TO 7 LOOP DOUT(I)<=DIN(I)AND ABIN; END LOOP; END PROCESS; END ARCHITECTURE ART; (2)16位锁存器的源程序REG16B.VHD LIBRARY IEEE;

相关主题
相关文档 最新文档