九九乘法表系统的设计

玛丽莲梦兔
712次浏览
2020年08月03日 21:54
最佳经验
本文由作者推荐

天津工艺美术职业学院-学雷锋好榜样作文


河南科技大学
课 程 设 计 说 明 书
课程名称
题 目
学 院
班 级
专 业
学 号
学生姓名
指导教师




__
现代数字系统设计
____


九九乘法表系统的设计_____




___电子信息工程学院__

__ 研1104班
电力电子与电力传动
__ 201104188
___ 邵鸿翔

_ _ 刘 珊 中 __







九九乘法表系统的设计

1. 系统功能和技术指标
九九乘 法表系统能够自动或手动进行两个1位十进制数的乘法,并自动显示
被乘数、乘数和乘积,该系统示意图 如下图所示。图中AA和BB分别为被乘数和
乘数的外部输


入端,它们用 1位 BCD码表示。系统用十进制七段数字显示器显示被乘数A、
乘数B和乘 积M的值,其中M用2位十进制显示器显示。
系统的功能和指标如下:
( 1)自动进行乘法运算并显示。用户将控制开关ARH置逻辑1,则系统内
部自动产生被乘数A’和乘数 B’,并按常规的九九乘法表方式,依照一定速率自
动进行 A’= 0~9和 B’= 0~9的乘法运算,即 A’×B’= 0 × 0,……,
0×9;1×0,……,1×9;……; 8×0;……,8×9;9×0,……,9×9。相应
有乘积M=0,……,0;0,……,9;……; 0,……,72;0,……,81等。
由于被乘数和乘数的最大值为9,故配置1位十进制显示;而乘积最大值为
81 ,则配置两位十进制数字显示。
(2)手动进行乘法运算并显示。当控制开关ARH为逻辑0 时,则乘法表系
统仅对外部输人被乘数AA和乘数BB的特定数据进行乘法运算并输出。在手动工
作状态时,分别采用两组4位开关产生被乘数和乘数的BCD码输人。
(3)乘法运算是以二进制数的乘法来进行的,而其结果要用变换器转换为


2位 BCD码输出,并应配有相应的显示译码器。
2. 算法设计
乘法器M=A*B具有自动运 算和手动运算两种方式,自动方式时,
AA


BB

;在手动方式时,A=AA,B=BB,这由控制开关ARH的来决定。
现设定信号EE为九九乘法表 完成一次自动工作,从
000,9981

全过
程的结束信号;TT 是某定时器(计数器)的结束信号,该定时器确定手动运算
的显示时间。则本系统的算法流程图如图所示 。这张图是系统算法流程,在增加
了状态标注和明确了输出信号后,也可看做系统控制器的ASM图,有 关状态标识
和输出信号等已在图中给出。

图1 九九乘法表系统算法流程图(系统控制器的ASM图)

3. 数据处理单元的实现
九九乘法表系统的数据处理单元结构框图如图2所示。



图2 九九乘法表系统的数据处理单元结构框图

(1)高速乘法器电路


图3 乘法器电路
对于4位乘法器而言,设A=1011,B=1101,则 运算过程可由图8.3-2所示。从
乘法运算过程可知,乘法运算可分解为移位和相加两种子运算,而且 是多次相加
运算,所以是一个累加的过程。实现这一累加过程的方法是,把每次相加的结果
用部 分积P表示,若B中某一位 Bi=1,把部分积P与A相加后右移1位;若B
中某一位Bi= 0, 则部分积P与0相加后右移1位(相当于只移位不累加)。通
过4次累加和移位,最后得到的部分积P就 是A与B的乘积。
(2)被乘数、乘数自动发生器。系统处于自动工作状态时,被乘数和乘数应自动、有序地产生,为此采用两只模10加计数器分别实现。被乘数计数器由0→9
记满时,进位信号 CO=1,则乘法计数器加1,从而达到被乘数的从0→9变化和
乘数的从0→9变化按次序相乘。 < br>(3)被乘数、乘数选择电路。由于在自动和手动工作状态时,乘法器的输入分
别为数据处理单元 内部自动产生或系统外部输入被乘数和乘数,为此配置两个4
位2选1数据选择器来选择恰当的输入,其 地址变量由控制器根据ARH的状态来
确定。
(4)码制变换电路。快速乘法器输出乘积M= A×B为7位二进制数,即
Mm
6
m
5
m
4
m< br>3
m
2
m
1
m
0
,必须转换为两位8421 BCD码显示,也就是说,从0×0=0
直到9×9=81,均应以十进制显示,以使用户直接观察到十 进制运算结果(被乘
数、乘数也用十进制数字显示),码制变换电路就是为实现该功能而设置的。 (5)显示译码电路。把BCD码表示的A、B和M变换为1位或2位十进制数字显
示器(七段显示 器)的控制信号,这是显示译码器应实现的功能。
4. 设计输入
建立九九乘法表系统的输 入文件可以有多种方式:图形描述方式、VHDL或
VerilogHDL语言描述方式或者图形和文本 相结合的描述方式。但是,无论采用
何种描述方式,对于复杂的系统,总采用层次化设计描述的思路,九 九乘法表系
统也不例外。因为在一个设计文件中完成全部的逻辑描述是非常困难的,也不利
于设 计调试,因而单层次的描述不是一种优良的设计风格。
利用VHDL支持层次化设计的功能,依据图2 所示的结构框图,采用了如图
3的层次结构来建立九九乘法表系统的VHDL文件输入文件。



图4 系统层次结构
在本系统的设计文件中,由于各种元件都是通 用型的,为此采用程序包。该系统
使用了两个程序包:一个是std_logic_1164,它才是I EEE标准制定的程序包,
包含在IEEE库中,其中说明了一些基本的数据类型和对应的运算规则,满 足普
通设计的需要。另一个是PLUS_LIB,它是本设计作者自定义的程序包,我们把
如图 4所示的模块均放在自定义的PLUS_LIB程序包中,他们说明了在顶层文件
内要使用的元件。
程序包PLUS_LIB的描述文件如下:

LIBRARY IEEE;
USE _LOGIC_;

PACKAGE PLUS_LIB IS
COMPONENT PLUSCONTROL
PORT(CLK :IN STD_LOGIC;
START,ARH,TT,EE :IN STD_LOGIC;
DONE,CRT,S,ENT :OUT STD_LOGIC);
END COMPONENT;



COMPONENT COUNT8
PORT(CLK :IN STD_LOGIC;
CRT,ENT :IN STD_LOGIC;
TT :OUT STD_LOGIC);
END COMPONENT;

COMPONENT CNT1
PORT(CLK : IN STD_LOGIC;
CRT :IN STD_LOGIC;
OC :OUT STD_LOGIC;
QA :OUT INTEGER RANGE 0 TO 9);
END COMPONENT;

COMPONENT CNT2
PORT(CLK :IN STD_LOGIC;
CRT :IN STD_LOGIC;
EN2 :IN STD_LOGIC;
EE :OUT STD_LOGIC;
QB :OUT INTEGER RANGE 0 TO 9);
END COMPONENT;

COMPONENT MUX1
PORT(BB,QB:IN INTEGER RANGE 0 TO 9;
S:IN STD_LOGIC;
B:OUT INTEGER RANGE 0 TO 9);
END COMPONENT;

COMPONENT MUX2
PORT(AA,QA :IN INTEGER RANGE 0 TO 9;
S :IN STD_LOGIC;
A :OUT INTEGER RANGE 0 TO 9);
END COMPONENT;

COMPONENT PLUS
PORT(A:IN INTEGER RANGE 0 TO 9;
B:IN INTEGER RANGE 0 TO 9;
M:OUT INTEGER RANGE 0 TO 81);
END COMPONENT;

COMPONENT TRANS
PORT(M:IN INTEGER RANGE 0 TO 81;
BD1,BD2:OUT INTEGER RANGE 0 TO 9);
END PLUS_LIB;



COMPONENT DISPLAY
PORT(DB1:IN INTEGER RANGE 9 TO 0;
XA1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
END COMPONENT;

END PLUS_LIB;

系统顶层设计:

LIBRARY IEEE;
USE _LOGIC_;
USE _;

ENTITY PLUS_TOP IS
PORT(CLK:IN STD_LOGIC;
AA,BB: IN INTEGER RANGE 0 TO 9;
A,B:BUFFER INTEGER RANGE 0 TO 9;
EE,OC: BUFFER STD_LOGIC;
BD1,BD2:OUT INTEGER RANGE 0 TO 9;
START,ARH:IN STD_LOGIC);
END PLUS_TOP;

ARCHITECTURE XYB OF PLUS_TOP IS
SIGNAL ENT,CRT,DONE,S,TT:STD_LOGIC;
SIGNAL QA,QB,TA,TB:INTEGER RANGE 0 TO 9;
SIGNAL M: INTEGER RANGE 0 TO 81;
BEGIN
A<=TA;
B<=TB;
CONTROL:PLUSCONTROL
PORT MAP(CLK,START,ARH,TT,EE,DONE,CRT,S,ENT);
COUNT1:COUNT8
PORT MAP(CLK,CRT,ENT,TT);
COUNT2:CNT1
PORT MAP(CLK,CRT,OC,QA);
COUNT3:CNT2


PORT MAP(CLK,CRT,OC,EE,QB);
M1:MUX1
PORT MAP(BB,QB,S,TB);
M2:MUX2
PORT MAP(AA,QA,S,TA);
P1:PLUS
PORT MAP(TA,TB,M);
P2:TRANS
PORT MAP(M,BD1,BD2);
END XYB;

控制器的设计:

LIBRARY IEEE;
USE _LOGIC_;

ENTITY PLUSCONTROL IS
PORT(CLK:IN STD_LOGIC;
START,ARH,TT,EE:IN STD_LOGIC;
DONE,CRT,S,ENT:OUT STD_LOGIC);
END PLUSCONTROL;

ARCHITECTURE XYB OF PLUSCONTROL IS
TYPE STATE_SPACE IS(S0,S1,S2,S3);
SIGNAL STATE:STATE_SPACE;
BEGIN
PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK='1' THEN
CASE STATE IS
WHEN S0=>
IF START='1'THEN
STATE<=S1;
END IF;
WHEN S1=>
IF ARH='1'THEN
STATE<=S3;
ELSE


STATE<=S2;
END IF;
WHEN S2=>
IF TT='1'THEN
STATE<=S0;
ELSE
STATE<=S2;
END IF;
WHEN S3=>
IF EE='1'THEN
STATE<=S1;
END IF;
END CASE;
END IF;
END PROCESS;
DONE<='1' WHEN STATE=S0 ELSE '0';
CRT<='0' WHEN STATE=S0 ELSE '1';
S<='1' WHEN STATE=S3 ELSE '0';
ENT<='1' WHEN STATE=S2 ELSE '0';
END XYB;

定时计数器的设计:

LIBRARY IEEE;
USE _LOGIC_;

ENTITY COUNT8 IS
PORT(CLK : IN STD_LOGIC;
CRT,ENT:IN STD_LOGIC;
TT:OUT STD_LOGIC);
END;

ARCHITECTURE XYB OF COUNT8 IS
BEGIN
PROCESS(CLK)
VARIABLE COUNT:INTEGER RANGE 0 TO 7;
BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF CRT='1' AND ENT='1' THEN
IF COUNT=7 THEN


COUNT:=0;
TT<='1';
ELSE
COUNT:=COUNT+1;
TT<='0';
END IF;
END IF;
END IF;
END PROCESS;
END XYB;

被乘数发生器的设计:

LIBRARY IEEE;
USE _LOGIC_;

ENTITY CNT1 IS
PORT(CLK : IN STD_LOGIC;
CRT:IN STD_LOGIC;
OC:OUT STD_LOGIC;
QA:OUT INTEGER RANGE 0 TO 9);
END;

ARCHITECTURE XYB OF CNT1 IS
BEGIN
PROCESS(CLK)
VARIABLE COUNT:INTEGER RANGE 0 TO 9;
BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF CRT='1' THEN
IF COUNT=9 THEN
COUNT:=0;
OC<='0';
ELSIF COUNT=8 THEN
COUNT:=COUNT+1;
OC<='1';
ELSE
COUNT:=COUNT+1;
OC<='0';


END IF;
END IF;
END IF;
QA<=COUNT;
END PROCESS;
END XYB;

乘数发生器的设计:

LIBRARY IEEE;
USE _LOGIC_;

ENTITY CNT2 IS
PORT(CLK :IN STD_LOGIC;
CRT :IN STD_LOGIC;
EN2 :IN STD_LOGIC;
EE :OUT STD_LOGIC;
QB :OUT INTEGER RANGE 0 TO 9);
END;

ARCHITECTURE XYB OF CNT2 IS
BEGIN
PROCESS(CLK)
VARIABLE COUNT:INTEGER RANGE 0 TO 9;
BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF CRT='1' THEN
IF EN2='1' THEN
IF COUNT=9 THEN
COUNT:=0;
EE<='1';
ELSE
COUNT:=COUNT+1;
END IF;
ELSE
EE<='0';
END IF;
END IF;
END IF;


QB<=COUNT;
END PROCESS;
END XYB;

乘数选择器的设计:

LIBRARY IEEE;
USE _LOGIC_;

ENTITY MUX1 IS
PORT(BB,QB:IN INTEGER RANGE 0 TO 9;
S:IN STD_LOGIC;
B:OUT INTEGER RANGE 0 TO 9
);
END MUX1;

ARCHITECTURE XYB OF MUX1 IS
BEGIN
B<=QB WHEN S='1'ELSE BB;
END XYB;

被乘数选择器的设计:

LIBRARY IEEE;
USE _LOGIC_;

ENTITY MUX2 IS
PORT(AA,QA:IN INTEGER RANGE 0 TO 9;
S:IN STD_LOGIC;
A:OUT INTEGER RANGE 0 TO 9
);
END MUX2;

ARCHITECTURE XYB OF MUX2 IS


BEGIN
A<=QA WHEN S='1'ELSE AA;
END XYB;

乘法器的设计:

LIBRARY IEEE;
USE _LOGIC_;

ENTITY plus IS
PORT(a:IN INTEGER RANGE 0 TO 9;
b:IN INTEGER RANGE 0 TO 9;
m:OUT INTEGER RANGE 0 TO 81);
END plus;

ARCHITECTURE XYB OF plus IS
BEGIN
m<=a*b;
END XYB;

码制变换器的设计:

LIBRARY IEEE;
USE _LOGIC_;

ENTITY trans IS
PORT(m:IN INTEGER RANGE 0 TO 81;
bd2,bd1:out INTEGER RANGE 0 TO 9);
END trans;

ARCHITECTURE XYB OF trans IS
BEGIN
process(m)
begin
if m<=9 then


bd2<=0;
bd1<=m;
elsif m<=19 then
bd2<=1;
bd1<=m-10;
elsif m<=29 then
bd2<=2;
bd1<=m-20;
elsif m<=39 then
bd2<=3;
bd1<=m-30;
elsif m<=49 then
bd2<=4;
bd1<=m-40;
elsif m<=59 then
bd2<=5;
bd1<=m-50;
elsif m<=69 then
bd2<=6;
bd1<=m-60;
elsif m<=79 then
bd2<=7;
bd1<=m-70;
else
bd2<=8;
bd1<=m-80;
end if;
end process;
end xyb;


5. 系统的功能仿真
设计输入文件经maxplus软件开发系统编译、处理,由功能仿真器进行模拟,
获得仿真波形如图 6所示。其中输入用1位十进制数表示,输出乘积已用2位十
进制数表示,BD2位高位,BD1是低位 。
例如,模拟开始时,ARH=0,系统执行手动功能,输入被乘数AA和乘数BB
有效:7 ×8=56。在200.0ns以后,ARH=1,系统执行自动功能,被乘数和乘数按
九九乘法表要求 自动产生,则乘积BD2、BD1输出相应的数值。








6. 实验心得
经过几周EDA实验的学习,使我受益匪浅。这不仅增 强了我对EDA设计的兴趣,更掌
握了基本的电路设计流程、方法以及技巧。具备了这些基本知识,为今 后的自主学习奠定了
良好的基础。在编写时可以相互借鉴,这样可以节省一定的时间,尤其是24进制的 处理上,
我们采用了简单的方法即可完成多个功能的顺利实现。此次设计不足之处是不能进行定时闹钟,这是有待改进的地方,当然我们也可以在闹钟的时候采用音乐提醒,可以和乐曲硬件演
奏电路设 计相结合,这样数字钟的功能才算是完美。
在设计中还是需要注意一些常见的问题,比如实体名、项目 名等,还有在编写VHDL文
件时,一些文件名也是需要注意的。通过本次实验使我更进一步地熟悉了V HDL硬件描述
语言的设计思想,也锻炼了自己独立思考问题的能力,同时通过对程序的调试也使自己对
VHDL语言的语法,结构和基本语句有了更深刻的了解。
最后感谢刘老师对我的指导,以及同学们对我的帮助,使得实验能够顺利完成!

平潭城关中学-医务室工作总结


2017假期-安全手抄报内容


爱荷华大学-清朝皇帝列表及简介


技术转让协议-沈阳市人事局


工作联系函格式-七年级美术教案


中元节禁忌-天大图书馆


广州大学地址-学业水平考试报名


沈阳会计网-欧洲名校