9x9乘法表

温柔似野鬼°
715次浏览
2020年08月03日 21:41
最佳经验
本文由作者推荐

关于变化的作文-初中教学工作总结



九九乘法表系统的设计
试设计一个供儿童学习九九乘法表之用的数字系统 ,该系统既可以引导学习
者跟随学习机连续背诵;也可以随时查找任何两个1位十进制数的相乘结果。

系统功能和技术指标
九九乘法表系统能够自动或手动进行两个1位十进制数的乘 法,并自动显示被乘数、乘
数和乘积,该系统示意图如图6-9所示。
显示A 显示B 显示C
A
输入AA


B
M
九九乘法表系统
输入BB
START
(启动信号)
图1 九九乘法表系统示意图
ARH
(自动或手动控制信号)

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

算法设计

乘法器M=A*B具有自动运算和手动运算两种方式,在自动方式时,A=A′, B=B′;在手
动方式时,A=AA,B=BB,这由控制开关ARH的状态来决定。


现设定信号EE为九九乘法表完成一次自动工作,从0*0=0直至9*9=81全过程的结束
信号;TT是某定时器(计数器)的结束信号,该定时器确定手动运算的显示时间。则本系
统的算法流程 图如图6-10所示。
S
0

等待
N
START=1
S
1
Y
操作
DONE=1
CRT=0
N
S
2
手动
ARH=1
Y
S
3
自动
N
TT=1
Y
N
EE=1
Y
图6-10 九九乘法表系统算法流程图(即系统控制器的ASM图)


这张图是系统算法流程图,在增加了状态标注和明确了输出信号后,也可看做系统控制
器的ASM图, 有关状态标志和输出信号等已在图中给出。
假设系统的时钟频率为1Khz, 手动控制的时间周期为5s, 自动计数的时间周期为3s.
6.3.3 数据处理单元的实现
九九乘法表系统的处理数据单元结构框图如图6-11所示。


乘积显示
B显示
8位二进制-2位BCD码变换器


4
DON
ARH
E
STAR
T
ENT
CRT
TT
地址控制
EE
A显示
4
快速乘法器

4
控制器
S
定时计数器
4
外部输入
BB
乘数
MUX

4
进位控制CO
被乘数
MUX

4
4
外部输入AA
外部输入B’
内部输入A’
CLK
CP发生器
EE
EN
乘数
被乘数
计数器
图6-11 九九乘法表系统数据处理单元结构图



(1) 高速乘法器电路。6.1节讨论的高速并行乘法器设计方案直接可以在此得到应用,
但符号位不考虑。
(2) 被乘数、乘数自动发生器。系统处于做的工作状态时,被乘数和乘数应自动、有序
地产 生,为此采用两只模10加计数器分别实现。被乘数计数器由0~9变化和乘数的从0~9
变化按次序相 乘。
(3) 被乘数、乘数选择电路。由于在自动和手动工作状态时,乘法器的输入分别为数据
处理单元内部自动产生或系统外部输入被乘数和乘数,为此配置两个4位2选1数据选择器
来选择恰当 的输入,其地址变量由控制器根据ARH的状态来确定。
(4) 码制变换电路。快速乘法器输出乘积 M=A*B为7位二进制数、即
M=m
6
m
5
m
4
m
3
m
2
m
1
m
0
,必须转换为两位84 21BCD码显示,也就是说,从0*0=0直至9*9=91,
均应以十进制显示,以使用户直接观察 到十进制运算结果(被乘数、乘数也用十进制数字显
示),码制变换电路就是为实现该功能而设置的。
(5) 显示译码电路。把BCD码表示的A、B和M变换为1位或2位十进制数字显示器
(七 段显示器)的控制信号,这是显示译码器应实现的功能。

6.34设计输入

顶层设计
控制器模块
内部程序包
定时器模块
被乘数计数器模块
乘数计数器模块
被乘数4位2选一模块
乘数4位2选一模块
乘法器模块
码制变换器模块
显示译码模块
图6-12 系统层次结构

建立九九乘法表系统的输入文件可以有多种方式:图形描述方式、VHDL火Verilog HDL< /p>


语言描述方式或者图形和文本想结合的描述方式。但是,无论采用何种描述方式,对于较复
杂的系统图,总采用层次化设计描述的思路,九九乘法表系统也不例外。以为在一个设计文
件中 完成全部的逻辑描述是非常困难的,也不利于激射调试,因而单层次的描述不是一种优
良的设计风格,
乘法器模块的设计:


也可以用VHDL语言编写:
library ieee;
use _logic_;
use _logic_;
use _logic_;
entity cheng is
port(a,b:in std_logic_vector(3 downto 0);
c:out std_logic_vector(7 downto 0));
end cheng;
architecture behave of cheng is
begin
process(a,b)


begin
c<=a*b;
end process;
end behave;
数据选择器模块A的设计
library ieee;
use _logic_;
use _logic_;
use _logic_;
entity mux2to1A is
port(S:in std_logic;
AA,BA:in std_logic_vector(3 downto 0);
YA:out std_logic_vector(3 downto 0));
end mux2to1A;
architecture behave of mux2to1A is
begin
process(AA,bA,s)
begin
if S='0' then
YA<=AA;
else
YA<=BA;
end if;


end process;
end behave;
数据选择器模块B的设计
library ieee;
use _logic_;
use _logic_;
use _logic_;
entity mux2to1B is
port(S:in std_logic;
AB,BB:in std_logic_vector(3 downto 0);
YB:out std_logic_vector(3 downto 0));
end mux2to1B;
architecture behave of mux2to1B is
begin
process(AB,BB,s)
begin
if S='0' then
YB<=AB;
else
YB<=BB;
end if;
end process;
end behave;



译码电路A的设计:
library ieee;
use _logic_;
use _logic_;
use _logic_;
entity encodeA is
port(enA:in std_logic;
dA:in std_logic_vector(9 downto 0);
AA:out std_logic_vector(3 downto 0));
end encodeA;
architecture behave of encodeA is
SIGNAL C: std_logic_vector(10 downto 0);
begin
C<=enA & dA;
WITH C SELECT
AA<=










end behave;
译码电路B的设计:
library ieee;
use _logic_;
use _logic_;
use _logic_;
entity encodeB is
port(enB:in std_logic;
dB:in std_logic_vector(9 downto 0);
AB:out std_logic_vector(3 downto 0));
end encodeB;
architecture behave of encodeB is
SIGNAL C: std_logic_vector(10 downto 0);
begin
C<=enB & dB;
WITH C SELECT
AB<=











end behave;
计数器的设计:

码制转换电路的设计:
library ieee;
use _logic_;
use _logic_;
use _logic_;
entity bin2bcd is
port(clk:in std_logic;


din:in std_logic_vector(7 downto 0);
y0,y1:out std_logic_vector(3 downto 0));
end bin2bcd;
architecture behav of bin2bcd is
type state is (s0,s1,s2);
signal present_state:state;
signal mid_in:std_logic_vector(7 downto 0);
signal d0,d1:std_logic_vector(3 downto 0);
begin

process(clk)is
begin
if clk'event and clk='1' then
mid_in<=din;
present_state<=s0;
case (present_state) is
when s0=>
d0<=
present_state<=s1;
when s1=>

if mid_in>=


mid_in<=mid_in-
d1<=d1+1;
present_state<=s1;
elsif mid_in>=
mid_in<=mid_in-
d0<=d0+1;
present_state<=s1;
else
present_state<=s2;
end if;
when s2=>
y0<=d0;y1<=d1;
when others=>
present_state<=s0;
end case;
end if;
end process;
七段译码电路的设计:



注:将GND改为Vcc
控制器的设计:
LIBRARY IEEE;
USE _LOGIC_;
USE _LOGIC_;
USE _LOGIC_;
ENTITY multi99 IS
PORT(clk :IN STD_LOGIC;
start,arh,tt,ee:IN STD_LOGIC;
done,crt,s,ent: OUT STD_LOGIC);
END multi99;
ARCHITECTURE one OF multi99 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;
ELSE
state<=S2;


END IF;
END CASE;
END IF;
END PROCESS;
done<='1' WHEN state=S0 ELSE '0';
crt<='1' WHEN state=S0 ELSE '0';
s<='1' WHEN state=S3 ELSE '0';
ent<='1' WHEN state=S2 ELSE '0';
END one;

数据处理单元的设计

张佑君-财务负责人工作总结


民间故事作文-制药技术


志愿填报-实践报告的格式


通化师范-接待员岗位职责


元宵节是几号-最有意义的一件事


中餐礼仪-运动员致辞


泗阳教育-中秋节黑板报图片


新闻系毕业论文-江门市人事考试网