电子设计自动化文档格式.docx

上传人:b****6 文档编号:21398730 上传时间:2023-01-30 格式:DOCX 页数:13 大小:166.98KB
下载 相关 举报
电子设计自动化文档格式.docx_第1页
第1页 / 共13页
电子设计自动化文档格式.docx_第2页
第2页 / 共13页
电子设计自动化文档格式.docx_第3页
第3页 / 共13页
电子设计自动化文档格式.docx_第4页
第4页 / 共13页
电子设计自动化文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

电子设计自动化文档格式.docx

《电子设计自动化文档格式.docx》由会员分享,可在线阅读,更多相关《电子设计自动化文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

电子设计自动化文档格式.docx

2

7

11

10

12

9

根据全加器的的输出和输入的关系,以及进位和输入的关系:

s=abcin-1cout=ab+abcin-1

由此可以用基本等式算法便能很直观的设计出程序。

B.流程图:

a+b+cin=和

判断

和大于15

和小于15

cout=1

s=和-15

cout=0

s=和

C.程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityadder4bitis

port(cin:

instd_logic;

a,b:

instd_logic_vector(3downto0);

s:

outstd_logic_vector(3downto0);

cout:

outstd_logic);

endadder4bit;

architecturebehofadder4bitis

signalsint:

std_logic_vector(4downto0);

signalaa,bb:

begin

aa<

='

0'

&

a(3downto0);

bb<

b(3downto0);

sint<

=aa+bb+cin;

s(3downto0)<

=sint(3downto0);

cout<

=sint(4);

endbeh;

D.仿真波形:

2.用if语句和case语句设计一个4-16译码器。

dq

~0000~0000000000000001

~0001~0000000000000010

~0010~0000000000000100

~0011~0000000000001000

~0100~0000000000010000

~0101~0000000000100000

~0110~0000000001000000

~0111~0000000010000000

~1000~0000000100000000

~1001~0000001000000000

~1010~0000010000000000

~1011~0000100000000000

~1100~0001000000000000

~1101~0010000000000000

~1110~010*********

~1111~1000000000000000

我们知道4_16

译码器的端口中,有4个输入

端,16个输出端,4个输入端

代表十进制输数到15,会对应

不同的输出。

原理图如图所示:

输入四位二进制数d

根据输入

用if或case语句

选择输出数据

输出十六位二进制数q

C.程序:

①if语句

libraryIEEE;

useIEEE.std_logic_1164.all;

entityencoder4_16is

port(d:

inSTD_LOGIC_VECTOR(3downto0);

q:

outSTD_LOGIC_VECTOR(15downto0));

endencoder4_16;

architectureencoder_ifofencoder4_16is

begin

process(d)

ifd="

0000"

thenq<

=(0=>

'

1'

others=>

);

elsifd="

0001"

=(1=>

0010"

=(2=>

0011"

=(3=>

0100"

=(4=>

0101"

=(5=>

0110"

=(6=>

0111"

=(7=>

1000"

=(8=>

1001"

=(9=>

1010"

=(10=>

1011"

=(11=>

1100"

=(12=>

1101"

=(13=>

1110"

=(14=>

1111"

=(15=>

elseq<

=(others=>

endif;

endprocess;

endencoder_if;

②case语句

useieee.std_logic_1164.all;

entitydecoder4_16is

port(data:

instd_logic_vector(3downto0);

en:

instd_logic;

y:

outstd_logic_vector(15downto0));

endentitydecoder4_16;

architecturearch1ofdecoder4_16is

process(en,data)

ifen='

then

casedatais

when"

=>

y(15downto0)<

="

1111111111111110"

;

1111111111111101"

1111111111111011"

1111111111110111"

1111111111101111"

1111111111011111"

1111111110111111"

1111111101111111"

1111111011111111"

1111110111111111"

1111101111111111"

1111011111111111"

1110111111111111"

1101111111111111"

1011111111111111"

0111111111111111"

whenothers=>

y(15downto0)<

1111111111111111"

endcase;

endarchitecture;

D.仿真波形

实验三

时序电路设计

1.设计4位二进制同步加/减法可逆计算器。

已知要求为:

输入:

clr:

异步清零(高电平有效)

clk:

时钟输入

load:

同步预置使能端(低电平有效)

D3~D0:

4位二进制数输入端

updown:

加/减法控制信号

(‘1’加,‘0’减)

输出:

Q3~Q0:

4位二进制计数输出

CO:

进位输出

BO:

借位输出

本题虽然输入输出数据很多思路还是比较简单,明确。

比如各种各样的约束条件如clr,clk,load端,我使用IF和WHEN语句,和IF-ELSE语句来实现程序所需功能。

首先判断clr端,若为1,则输出0000,若为低电平,否则进行下一步:

判断时钟同步预置使能端load,若为0,Q3~Q0输出为D3~D0,否则进行下一步:

判断updown:

加/减法控制信号,若为1,输出根据clk:

时钟输入作加法运算输出,若为0,输出根据clk:

时钟输入作减法运算输出。

clr,clk,load,updown,D3~D0

输出:

CO,BO,Q3~Q0

为1

判断clr值输出0000

为0

为0

判断load值输出为D3~D0

为1

判断updown值

加法器减法器

libraryieee;

entityjishuqiis

port(clr,clk,load,updown:

d:

co,bo:

outstd_logic;

q:

bufferstd_logic_vector(3downto0));

endentityjishuqi;

architecturewtfofjishuqiis

begin

co<

when(q="

andupdown='

)else'

bo<

process(clk,clr,updown)is

if(clr='

)thenq<

elsif(clk'

eventandclk='

)then

if(load='

=d;

elseif(updown='

=q+1;

Elseq<

=q-1;

endif;

endprocess;

endarchitecturewtf;

D.仿真波形:

清零端为高电平有效:

清零端为低电平,load端为低电平有效:

清零端为低电平,load端为高电平,updown为1

清零端为低电平,load端为高电平,updown为

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

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

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

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