学号:10446234 常 州 大 学 EDA 技 术 课 程 设 计 报 告
学 生: 朱京 学院(系): 信息科学与工程学院 专 业 班 级: 电子102 指导教师: 李文杰
题 目: 移位相加8位硬件乘法器设计
一、设计题目 移位相加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) 撰写课程设计报告、答辩并提交报告。
1 移位相加8位硬件乘法器设计
目 录
1产品设计介绍 ............................................................................................................................. 1
1.1 概念: ............................................................................................................................ 1
1.2 意义: ............................................................................................................................ 1 1.3主要功能: ...................................................................................................................... 1 1.4设计平台: ...................................................................................................................... 1
1.4.1硬件平台:............................................................................................................ 1 1.4.2软件平台:............................................................................................................ 1
2方案设计及实现.......................................................................................................................... 2
2.1系统实现原理................................................................................................................... 2 2.2 设计步骤 ......................................................................................................................... 2
2.2.1系统介绍:............................................................................................................ 2 2.2.2原理框图:............................................................................................................ 2 2.3主要模块之8位右移寄存器模块的设计 ............................................................................ 4
2.3.3源代码: ............................................................................................................... 4 2.3.4仿真图: ............................................................................................................... 5 2.3.5仿真分析:............................................................................................................ 5 2.4主要模块之8位加法寄存器模块的设计 ............................................................................ 6
2.4.3源代码: ............................................................................................................... 6 2.4.4仿真图:............................................................................................................ 6 2.5主要模块之选通与门模块的设计....................................................................................... 7
2.5.3源代码: ............................................................................................................... 7
2.5.4仿真图: ............................................................................................................... 8 2.5.5仿真分析:............................................................................................................ 8 2.6主要模块之16位锁存器的设计 ........................................................................................ 9
2.6.4仿真图: ............................................................................................................. 10 2.6.5仿真分析:.......................................................................................................... 10 2.7系统总体仿真................................................................................................................. 11
2.7.1仿真图: ............................................................................................................. 11 2.7.2仿真分析:.......................................................................................................... 11
3硬件调试 .................................................................................................................................. 11
3.1调试方法: .................................................................................................................... 11
3.2调试步骤: .................................................................................................................... 11 3.3调试结果及分析: ........................................................................................................... 12 4心得体会及总结........................................................................................................................ 12 5参考文献 .................................................................................................................................. 12 6附录 ......................................................................................................................................... 13
6.1引脚锁定........................................................................................................................ 13
6.2功能扩展........................................................................................................................ 13
1 移位相加8位硬件乘法器设计
1产品设计介绍
1.1 概念:
该乘法器是由8位加法器构成的以时序方式设计的8位乘法器。
1.2 意义:
纯组合逻辑构成的乘法器虽然工作速度比较快,但过于占用硬件资源,难以实现宽位乘法器。基于PLD器件外接ROM九九表的乘法器则无法构成单片系统,也不实用。由8位加法器构成的以时
序逻辑方式设计的8位乘法器,具有一定的实用价值。其乘法通过逐项移位相加来实现,从被乘数最低位开始,若为1,则乘数左移后与上次的和相加,若为0,左移后与全0相加,直至被乘数的最高位。
1.3主要功能:
乘法通过逐项移位相加原理来实现,从被乘数的最低位开始,若为1,则乘数左移后
与上一次的和相加;若为0,左移后以全零相加,直至被乘数的最高位。 1.4设计平台:
1.4.1硬件平台:
GW48 EDA实验系统
1.4.2软件平台:
MAX+plus II;Windows7
1
2 移位相加8位硬件乘法器设计
2方案设计及实现
2.1系统实现原理
在下图中,START信号的上跳沿及其高电平有两个功能,即16位寄存器清零
和被乘数A[7..0]向移位寄存器SREG8B加载;它的低电平则作为乘法使能信号。CLK为乘法时钟信号。当被乘数被加载于8位右移寄存器SREG8B后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出。当为1时,与门ANDER打开,8位乘数B[7..0]在同一节拍进入8位加法器,与上一次锁存在16位锁存器REG16B中的高8位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器。而当被乘数的移出位为0时,与门全零输出。如此往复,直至8个时钟脉冲后,乘法运算过程中止。此时SREG16B的输出值即为最后的乘积。此乘法器的优点是节省芯片资源,它的核心元件只是一个8位加法器,其运算速度取决于输入的时钟频率。
本设计采用层次描述方式,且用原理图输入和文本输入混合方式建立描述文件。下图是乘法器顶层图形输入文件,它表明了系统由8位右移寄存器(SREG8B)、8位加法器(ADDER8)、选通与门模块(ANDER)和16位锁存器(SREG16B)所组成,它们之间的连接关系如下图所示。 2.2 设计步骤 2.2.1系统介绍:
此移位相加8位硬件乘法器分为四大部分。 第一部分:8位寄存器设计 第二部分:选通与门设计 第三部分:8位带进位加法器 第四部分:16位锁存器
2.2.2原理框图:
2
3 移位相加8位硬件乘法器设计
输出
clk 输入 8位寄存器 选通与门 16位锁存器 高8位 加法器 移位相加硬件乘法器电路原理图
3
4 移位相加8位硬件乘法器设计
2.3主要模块之8位右移寄存器模块的设计
2.3.1 模块说明:输入为clk、load和din,输出为q;
2.3.2 模块功能:模块的主要功能是数据右移。
8位右移寄存器工作流程图
结束 输出最低位 N 开始 Y clk=’1’’ load=’0’ Y 装载新数据 N 数据右移
2.3.3源代码:
library ieee;
use ieee.std_logic_11.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity SREG8B is port(clk,load:in std_logic;
din:in std_logic_vector(7 downto 0); q:out std_logic);
end SREG8B;
architecture behave of SREG8B is
signal reg8:std_logic_vector(7 downto 0); begin
process(load,clk) begin
4
5 移位相加8位硬件乘法器设计
if(clk'event and clk='1')then if(load='0')then reg8<=din; else
reg8(6 downto 0)<=reg8(7 downto 1); end if; end if;
end process; q<=reg8(0); end behave;
2.3.4仿真图:
2.3.5仿真分析:
在上升沿脉冲到来且load为0的时候,装载新数据,并输出din(0); 在load为1的时候,进行数据右移,并输出din(0)。
5
6 移位相加8位硬件乘法器设计
2.4主要模块之8位加法寄存器模块的设计
2.4.1模块说明:输入为a、b,输出为q;
2.4.2模块功能:模块的主要功能是实现两个8位数的加法运算
8位加法寄存器的工作流程图
开始 q<=a+b 结束
2.4.3源代码:
library ieee;
use ieee.std_logic_11.all; use ieee.std_logic_unsigned.all; entity ADDER8 is
port(a:in std_logic_vector(7 downto 0);
b:in std_logic_vector(7 downto 0); q:out std_logic_vector(8 downto 0));
end ADDER8;
architecture behave of ADDER8 is begin
q<=a+b; end behave; 2.4.4仿真图:
:
6
7 移位相加8位硬件乘法器设计
2.4.5仿真分析:
这是一个8位带进位加法器,输出q为输入a与输入b的和,最高位q(8)是进位位
2.5主要模块之选通与门模块的设计
2.5.1模块说明:输入为abin和din,输出为q;
2.5.2模块功能:模块的主要功能是完成8位与1位运算。
选通与门模块的工作流程图 开始
abin=’1’q<=din q<=\"00000000\" 结束
2.5.3源代码: library ieee;
use ieee.std_logic_11.all; use ieee.std_logic_unsigned.all; entity ANDER is port(abin:in std_logic;
din:in std_logic_vector(7 downto 0);
q:out std_logic_vector(7 downto 0)); end ANDER;
architecture behave of ANDER is
7
8 移位相加8位硬件乘法器设计
begin
process
begin if(abin = '1')then
q<=din; else q<=\"00000000\"; end if;
end process;
end behave;
2.5.4仿真图:
2.5.5仿真分析:
在abin为‘1’的时候,输出q=din;在abin为‘0’的时候,输出q=“00000000”。
8
9 移位相加8位硬件乘法器设计
2.6主要模块之16位锁存器的设计
2.6.1模块说明:输入为clk、clr和din,输出为q;
2.6.2模块功能:模块的主要功能是将数据锁存。
16位锁存器工作流程图
2.6.3源代码:
library ieee;
use ieee.std_logic_11.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity SREG16B is
port(clk,clr:in std_logic;
din:in std_logic_vector(8 downto 0);
q:out std_logic_vector(15 downto 0)); end SREG16B;
architecture behave of SREG16B is signal reg16:std_logic_vector(15 downto 0); begin
process(clr,clk)
开始 Y clr=’0’N clk=’1’ Y 清零 锁存输入值 并右移低8位 输出16位结果 结束
begin
if(clr = '0')then reg16<=\"0000000000000000\";
9
10 移位相加8位硬件乘法器设计
elsif(clk'event and clk='1')then
reg16(15 downto 7)<=din;
reg16(6 downto 0)<=reg16(7 downto 1); end if;
end process; q<=reg16; end behave; 2.6.4仿真图:
2.6.5仿真分析:
当clr为‘0’的时候,输出清零;在clr为‘1’且上升沿脉冲到来的时候,输入din锁存至输出的高9位且将低8位右移一位。
10
11 移位相加8位硬件乘法器设计
2.7系统总体仿真 2.7.1仿真图:
2.7.2仿真分析:
将输入A设定为21,输入B设定为32,按下START(键8),连续来8个脉冲后,输出为0672,与理论计算结果相同。
3硬件调试
3.1调试方法:
在GW48 EDA实验箱上选择电路模式1,8位输入A、B分别锁定键1、2、3、4,START信号锁定键8,16位输出锁定数码管5、6、7、8,CLK信号选择2KHz。 3.2调试步骤:
1.输入A设定为21,输入B设定为32;
2.CLK选择2KHz,按下START(键8); 3.观察数码管5、6、7、8。
11
12 移位相加8位硬件乘法器设计
3.3调试结果及分析:
结果:在第8个脉冲到来时,数码管上显示0672;
分析:与仿真波形的结果相同,更改输入A,B的数据,数码管的输出结果与仿真波形都相同,达到设计要求。
4心得体会及总结 4.1总结
在长达十天的课程设计当中,我更加熟悉了MAX+plus II 软件的使用,比如说
实体、结构体的作用、保存的时候不能还有中文及文件名要和实体名相同等。 加深了对VHDL编程语言的理解,尤其是本课题中锁存器的设计让我更清楚进程、变量、信号的使用及它们之间的区别。
EDA这门课程还是非常重要的。通过这次EDA课程设计,意识到了其重要性。当然,团队合作也很重要,非常感谢其他组员的配合,才能让这次的EDA课程设计快速的完成。
4.2遇到的问题
在调试过程中,其输出结果与仿真波形总是不一致,但是一直找不到错误。后来,想到了原因是因为引脚锁定时锁定错误。一个非常低级的错误,让我多走了一些弯路。提醒自己在做各种事情的时候要小心谨慎,不要粗心大意。
5参考文献
【1】 朱正伟编著《EDA基础及应用》 【2】 韩学超,张小鸣编著《EDA技术开发系统GW48实验指导书》
12
13 移位相加8位硬件乘法器设计
6附录
6.1引脚锁定
选择器件FLEX EPF10K10-PLCC84-4 名称 引脚号 名称 引脚号 A(0) 5 B(0) 17 A(1) 6 B(1) 18 A(2) 7 B(2) 19 A(3) 8 B(3) 21 A(4) 9 B(40 22 A(5) 10 B(5) 23 A(6) 11 B(6) 24 A(7) 16 B(7) 25 START 81 CLK 43 DOUT(0) 27 DOUT(1) 28 DOUT(2) 29 DOUT(3) 30 DOUT(4) 35 DOUT(5) 36 DOUT(6) 37 DOUT(7) 38 DOUT(8) 39 DOUT(9) 47 DOUT(10) 48 DOUT(11) 49 DOUT(12) 50 DOUT(13) 51 DOUT(14) 52 DOUT(15) 53 6.2功能扩展
以下内容是为了显示本次课程设计的题目”4:MUTIPLY”,采用verilog语言。代码如下:
module lcd(clk, rs, rw, en,dat); input clk;
output [7:0] dat; output rs,rw,en; reg e;
reg [7:0] dat; reg rs;
reg [15:0] counter; reg [4:0] current,next; reg clkr; reg [1:0] cnt;
parameter set0=4'h0; parameter set1=4'h1; parameter set2=4'h2;
13
14 移位相加8位硬件乘法器设计
parameter set3=4'h3;
parameter dat0=4'h4; parameter dat1=4'h5; parameter dat2=4'h6; parameter dat3=4'h7; parameter dat4=4'h8; parameter dat5=4'h9; parameter dat6=4'hA; parameter dat7=4'hB; parameter dat8=4'hC; parameter dat9=4'hD; parameter dat10=4'hE; parameter dat11=5'h10; parameter nul=4'hF;
always @(posedge clk) begin
counter=counter+1;
if(counter==16'h000f) clkr=~clkr; end
always @(posedge clkr) begin
current=next; case(current)
set0: begin rs<=0; dat<=8'h30; next<=set1; end set1: begin rs<=0; dat<=8'h0c; next<=set2; end set2: begin rs<=0; dat<=8'h6; next<=set3; end set3: begin rs<=0; dat<=8'h1; next<=dat0; end dat0: begin rs<=1; dat<=\"4\"; next<=dat1; end dat1: begin rs<=1; dat<=\":\"; next<=dat2; end dat2: begin rs<=1; dat<=\"M\"; next<=dat3; end dat3: begin rs<=1; dat<=\"U\"; next<=dat4; end dat4: begin rs<=1; dat<=\"T\"; next<=dat5; end dat5: begin rs<=1; dat<=\"P\"; next<=dat6; end dat6: begin rs<=1; dat<=\"L\"; next<=dat7; end dat7: begin rs<=1; dat<=\"Y\"; next<=dat8; end dat8: begin rs<=1; dat<=\" \"; next<=dat9; end dat9: begin rs<=1; dat<=\" \"; next<=dat10; end dat10: begin rs<=1; dat<=\" \"; next<=dat11; end dat11: begin rs<=1; dat<=\" \"; next<=nul; end
nul: begin rs<=0; dat<=8'h00; if(cnt!=2'h2) begin
e<=0;next<=set0;cnt<=cnt+1;
14
15 移位相加8位硬件乘法器设计
end
else
begin next<=nul; e<=1; end end default: next=set0; endcase end
assign en=clkr|e; assign rw=0; endmodule
15
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务