杨熙丞03870124数字电路报告综述.docx

上传人:b****7 文档编号:8949388 上传时间:2023-02-02 格式:DOCX 页数:17 大小:169.97KB
下载 相关 举报
杨熙丞03870124数字电路报告综述.docx_第1页
第1页 / 共17页
杨熙丞03870124数字电路报告综述.docx_第2页
第2页 / 共17页
杨熙丞03870124数字电路报告综述.docx_第3页
第3页 / 共17页
杨熙丞03870124数字电路报告综述.docx_第4页
第4页 / 共17页
杨熙丞03870124数字电路报告综述.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

杨熙丞03870124数字电路报告综述.docx

《杨熙丞03870124数字电路报告综述.docx》由会员分享,可在线阅读,更多相关《杨熙丞03870124数字电路报告综述.docx(17页珍藏版)》请在冰豆网上搜索。

杨熙丞03870124数字电路报告综述.docx

杨熙丞03870124数字电路报告综述

数字电路与数字逻辑大型试验报告

姓名杨熙丞

学号201203870124

指导教师周晓

专业班级电气信息类1201

学院信息学院

 

提交日期2014年7月9日

一.试验内容

1.数字乘法器的设计

2.彩灯循环显示控制电路实验

3.四位二进制加法器试验

4.水位报警器试验

二.4位数字乘法器设计

1.设计题目

4位数字乘法器设计

2.方案设计及原理

图1.工作时序图

乘法器的算法可以用算法流程图来描述。

当START信号为高电平时,启动乘法运算。

在运算过程中,共进行4次累加和移位操作。

当i=4时,表示运算结束,END信号置为高电平。

图2.原理框图

在明确乘法器的算法之后,便可将电路划分成数据处理单元和控制单元。

数据处理单元实现算法流程图规定的寄存、移位、加法运算等各项运算及操作。

控制单元接收来自数据处理单元的状态信号并向其发出控制信号。

REGA和REGB为4位寄存器,分别用于存放被乘数A、乘数B。

REGS为一5位寄存器,用于存放加法器输出的结果(考虑进位时为5位)。

在运算过程中,寄存器REGS和REGB合起来用于存放部分积P,因此,REGS和REGB还应具有右移功能,以实现部分积的右移。

寄存器REGS的移位输出送寄存器REGB,寄存器REGB的移位输出信号Bi送至控制器,以决定部分积是与被乘数相加还是与零相加。

并行加法器ADDER用于实现4位二进制加法运算。

计数器CNT用于控制累加和移位的循环次数。

当计数值等于4时,计数器的输出信号i4输出高电平。

控制器MULCON的功能是接收来自寄存器REGB的移位输出信号Bi和计数器输出信号i4,发出CA、CB0、CB1、CS0、CS1、CLR、CC等控制信号。

其中,CA为寄存器REGA的控制信号,用于选择置数或保持功能;CS0、CS1为寄存器REGS的控制信号,用于选择置数、右移和保持等功能;CB0、CB1为寄存器REGB的控制信号,用于选择置数、右移和保持等功能;CLR为寄存器REGS和计数器CNT的异步清零信号;CC为计数器CNT计数使能信号。

乘法器的控制单元采用CP脉冲上升沿触发,而数据处理单元采用CP的下降沿触发。

其目的有二:

一是使控制器无需产生数据处理单元的时钟信号,降低了控制器复杂程度;二是为了避免时钟偏移对电路的不良影响。

3.顶层原理图的设计

图3.顶层原理图

4.底层模块设计

REGA:

libraryIEEE;

useIEEE.std_logic_1164.all;

entityREGAis

port(CP,LD:

instd_logic;

D:

instd_logic_vector(3downto0);

Q:

outstd_logic_vector(3downto0));

endREGA;

architectureoneofREGAis

begin

process(CP,LD,D)

begin

if(CP'eventandCP='1')then

ifLD='1'then

Q<=D;

endif;

endif;

endprocess;

end;

REGB

libraryIEEE;

useIEEE.std_logic_1164.all;

entityREGBis

port(CP,DIR:

instd_logic;

S:

instd_logic_vector(1downto0);

D:

instd_logic_vector(3downto0);

Q:

bufferstd_logic_vector(3downto0));

endREGB;

architectureoneofREGBis

begin

process(CP,D,S)

begin

if(CP'eventandCP='1')then

caseSis

when"00"=>NULL;

when"01"=>Q<=DIR&Q(3downto1);

when"11"=>Q<=D;

whenothers=>NULL;

endcase;

endif;

endprocess;

end;

REGC

libraryIEEE;

useIEEE.std_logic_1164.all;

entityREGCis

port(CP,RD,DIR:

instd_logic;

S:

instd_logic_vector(1downto0);

D:

instd_logic_vector(4downto0);

Q:

bufferstd_logic_vector(4downto0));

endREGC;

architectureoneofREGCis

begin

process(CP,D,S,RD)

begin

if(RD='1')thenQ<=(others=>'0');

elsif(CP'eventandCP='1')then

caseSis

when"00"=>NULL;

when"01"=>Q<=DIR&Q(4downto1);

when"11"=>Q<=D;

whenothers=>NULL;

endcase;

endif;

endprocess;

end;

CNT

libraryIEEE;

useIEEE.std_logic_1164.all;

useIEEE.std_logic_unsigned.all;

entityCNTis

port(CP,RD,ET:

instd_logic;

CO:

outstd_logic);

endCNT;

architectureoneofCNTis

signalQ:

std_logic_vector(2downto0);

begin

process(CP,RD,ET)

begin

if(RD='1')then

Q<="000";

elsif(CP'eventandCP='1')then

ifET='1'then

if(Q=4)then

Q<="000";

else

Q<=Q+1;

endif;

endif;

endif;

endprocess;

process(Q)

begin

if(Q=4)then

CO<='1';

else

CO<='0';

endif;

endprocess;

end;

MULCON

libraryIEEE;

useIEEE.std_logic_1164.all;

entityMULCONis

port(START,I4,BI,CP:

instd_logic;

DONE,RD,CA,CB1,CB0,CC1,CC0,ET:

outstd_logic);

endMULCON;

architectureoneofMULCONis

signalcurrent_state,next_state:

bit_vector(1downto0);

constants0:

bit_vector(1downto0):

="00";

constants1:

bit_vector(1downto0):

="01";

constants2:

bit_vector(1downto0):

="11";

constants3:

bit_vector(1downto0):

="10";

begin

COM:

process(current_state,START,BI,I4)

begin

DONE<='0';RD<='0';CA<='0';CB1<='0';CB0<='0';CC1<='0';CC0<='0';ET<='0';

casecurrent_stateis

whenS0=>DONE<='1';

if(start='1')thennext_state<=S1;

elsenext_state<=S0;

endif;

whenS1=>RD<='1';CA<='1';CB1<='1';CB0<='1';

next_state<=S2;

whenS2=>

if(BI='1')thenCC1<='1';CC0<='1';ET<='1';

elseET<='1';

endif;

next_state<=S3;

whenS3=>CB0<='1';CC0<='1';

if(I4='1')thennext_state<=S0;

elsenext_state<=S2;

endif;

endcase;

endprocessCOM;

REG:

process(CP)

begin

ifCP='1'andCP'eventthen

current_state<=next_state;

endif;

endprocessREG;

end;

ADD4B

libraryIEEE;

useIEEE.std_logic_1164.all;

useIEEE.std_logic_unsigned.all;

entityADD4Bis

port(

A:

instd_logic_vector(3downto0);

B:

instd_logic_vector(3downto0);

C:

outstd_logic_vector(3downto0);

COUT:

outstd_logic);

end;

architectureoneofADD4Bis

signalCRLT:

std_logic_vector(4downto0);

signalAA,BB:

std_logic_vector(4downto0);

begin

AA<='0'&A;

BB<='0'&B;

CRLT<=AA+BB;

C<=CRLT(3downto0);

COUT<=CRLT(4);

end;

5.仿真结果

图4.仿真结果

当A的四位输入信号为1111,B的四位输入信号为0000时,P的8位输出为00000000,满足结果要求。

6引脚锁定和下载测试

表一引脚锁定:

SW0

A0

PIN_N25

SW1

A1

PIN_N26

SW2

A2

PIN_P25

SW3

A3

PIN_AE14

SW4

B0

PIN_AF14

SW5

B1

PIN_AD13

SW6

B2

PIN_AC13

SW7

B3

PIN_C13

KEY0

START

PIN_G26

CLKIN

CP

PIN_G25

LEDG8

END

PIN_Y12

LEDG7

P7

PIN_Y18

LEDG6

P6

PIN_AA20

LEDG5

P5

PIN_U17

LEDG4

P4

PIN_U18

LEDG3

P3

PIN_V18

LEDG2

P2

PIN_W19

LEDG1

P1

PIN_AF22

LEDG0

P0

PIN_AE22

下载测试:

已通过老师审核。

 

三.自选设计题

1.设计题目

彩灯循环显示控制电路实验

2.方案设计及原理

主要芯片由74198构成,74198是一种双向8位移位寄存器。

74198功能表:

清零

模式控制

时钟

串行输入

并行输入

输出

功能

描述

S1

S0

CLOCK

DSL

DSR

A

B

C

D

QAQBQCQD...QH

0

×

×

×

×

×

×

×

×

×

0000...0

清零

1

×

×

0

×

×

×

×

×

×

QA0QB0QC0QD0...QH0

保持

1

1

1

×

×

a

b

c

d

abcd...h

并入

1

0

1

×

0

×

×

×

×

0QA0QB0QC0...QG0

右移0

1

0

1

×

1

×

×

×

×

1QA0QB0QC0...QG0

右移1

1

1

0

0

×

×

×

×

×

QB0QC0QD0...QH00

左移0

1

1

0

1

×

×

×

×

×

QB0QC0QD0...QH01

左移1

1

0

0

×

×

×

×

×

×

×

QA0QB0QC0QD0...QH0

保持

 

此电路设计了5个输入端,GAO输入端与A,B,E,F相连。

DI输入端与C,D,G,H相连。

S0,S1控制左移右移。

Cp控制时钟脉冲。

8个输出端显示结果。

这样可以做到二亮二灭右移或左移。

当S0=0,S1=1时彩灯左移。

当S0=1,S1=0时,彩灯右移。

(此时GAO为高电平,DI为低电平)当GAO和DI为高电平时,彩灯全亮。

当GAO和DI为低电平时,彩灯全灭。

3顶层原理图设计

图5顶层原理图

4.仿真结果

此时为全亮。

图6仿真结果

此时为全灭。

5.引脚锁定与下载测试

表2引脚锁定:

CLKIN

CP

PIN_G25

SW0

A0

PIN_N25

LEDG7

P7

PIN_Y18

LEDG6

P6

PIN_AA20

LEDG5

P5

PIN_U17

LEDG4

P4

PIN_U18

LEDG3

P3

PIN_V18

LEDG2

P2

PIN_W19

LEDG1

P1

PIN_AF22

LEDG0

P0

PIN_AE22

SW1

A1

PIN_N26

下载测试已通过老师审核。

 

四.自选设计题2

1.设计题目

四位二进制加法器试验

2.方案设计及原理

1试验用到了74283元件。

其中A3~A0和B3~B0是被加数,CIN是进位标志。

S3~S0显示结果,COUT是输出进位标志。

电路将两个四位二进制被加数从电平开关SW7~SW0输入,进位输入通过按键输入。

和及进位输出直接驱动发光二极管。

               

  3顶层原理图设计

图7顶层原理图

4仿真结果

图8仿真结果

当A为0001,B为0000,进位输入为1时,结果为0010,满足要求。

5引脚锁定与下载测试

表3引脚锁定:

SW0

A0

PIN_N25

SW1

A1

PIN_N26

SW2

A2

PIN_P25

SW3

A3

PIN_AE14

SW4

B0

PIN_AF14

SW5

B1

PIN_AD13

SW6

B2

PIN_AC13

SW7

B3

PIN_C13

KEY0

CIN

PIN_G26

LEDG4

COUT

PIN_U18

LEDG3

S3

PIN_V18

LEDG2

S2

PIN_W19

LEDG1

S1

PIN_AF22

LEDG0

S0

PIN_AE22

试验结果已通过验收。

 

五.自选设计题3

1.设计题目

水位报警器

2.方案设计及原理

设计一个水位报警控制器,设水位高度用四位二进制数A3A2A1A0提供。

当水位上升到7米时,白指示灯w开始亮;当水位上升到9米时,黄指示灯y开始亮:

当水位上升到11米时,红指示灯r开始亮,其它灯灭;水位不可能上升到14米。

试用或非门设计此报警器的控制电路。

方案设计:

根据逻辑规定和功能要求,可得到相应的真值表。

并根据真值表,画出卡诺图。

再写出最简与-或逻辑表达式。

3顶层原理图设计

图9.顶层原理图

4仿真结果

图10仿真结果

A3A2A1A0在0000-0110时,灯不亮。

在0111-1000时(7m-8m)灯W亮。

图11仿真结果

在1001-1010时(9m-10m)时灯Y亮。

图12仿真结果

 

1011-1101时(11m-13m)灯R亮

5.引脚锁定与下载测试

表4引脚锁定:

SW0

A0

PIN_N25

SW1

A1

PIN_N26

SW2

A2

PIN_P25

SW3

A3

PIN_AE14

LEDR0

R

PIN_AE23

LEDR1

Y

PIN_AF23

LEDR2

W

PIN_AB21

下载测试已通过。

六.心得体会

本次数字电路大型实验使我学到了很多东西,不仅让我们掌握了VHDL语言和如何构建原理图,而且还让我们学会了如何进行结果的仿真和下载,最终目的是让我们学会了硬件电路设计的一种新的方法。

更重要的是,能够让我们每个人都亲身进行操作并增强了我们自己的动手能力,以后如果碰到硬件电路的设计,我们就能有迹可循,也就可以用现在学过的知识运用到实践中去,这样对我自己也有很大的提高。

不过在实验中,我也碰到了一些问题。

例如,有时VHDL语言编译的时候有错误,这时只能边找错误边调试,有时可能是由于符号引起的错误,要特别注意。

有时在构建原理图编译时也会碰到有错误的问题,这时可能是由于原理图中线没连好的缘故,就要重新回到原理图中修改再编译。

还有引脚的问题,要参考书最后面的资料。

总体上来说,这次实验对我们的帮助很大,以后能够让我们更好地运用到实践中去。

更重要的是这些发现错误并解决的能力,希望以后也不要忘记。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1