VHDL程序题Word文档下载推荐.docx

上传人:b****5 文档编号:18194875 上传时间:2022-12-14 格式:DOCX 页数:16 大小:45.61KB
下载 相关 举报
VHDL程序题Word文档下载推荐.docx_第1页
第1页 / 共16页
VHDL程序题Word文档下载推荐.docx_第2页
第2页 / 共16页
VHDL程序题Word文档下载推荐.docx_第3页
第3页 / 共16页
VHDL程序题Word文档下载推荐.docx_第4页
第4页 / 共16页
VHDL程序题Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

VHDL程序题Word文档下载推荐.docx

《VHDL程序题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VHDL程序题Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

VHDL程序题Word文档下载推荐.docx

u2:

h_adderportmap(a=>

e,b=>

cin,co=>

f,so=>

sum);

u3:

or2aportmap(a=>

d,b=>

f,c=>

cout);

endarchitecturefd1;

2.以下是含有使能端且具有同步清零的加减计数器的VHDL设计,试补充完整。

usecounteris

port(updown,enable,clear,clk:

instd_logic;

q:

outintegerrange0to255);

endcounter;

architectureaofcounteris

process(clk)

variablecnt:

integerrange0to(7);

variabledirection:

(8);

if(updown='

1'

)then

direction:

=1;

else

(9)

endif;

if(clk'

eventandclk='

ifclear='

0'

then

cnt:

=0;

ifenable='

(10)

q<

=cnt;

endprocess;

enda;

(7)255(8)integer(9)direction:

=-1;

(10)cnt:

=cnt+direction

1.以下是8位分频器程序设计

LIBRARYIEEE;

USEPULSEIS

PORT(CLK:

INSTD_LOGIC;

D:

INSTD_LOGIC_VECTOR(7DOWNTO0);

FOUT:

OUTSTD_LOGIC);

END;

ARCHITECTUREoneOFPULSEIS

SIGNALFULL:

STD_LOGIC;

BEGIN

P_REG:

PROCESS(CLK)

VARIABLECNT8:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

IFCLK’EVENTANDCLK=‘1’THEN

IFCNT8="

"

THEN

CNT8:

=D;

FULL<

='

;

ELSECNT8:

=CNT8+1;

FULL<

ENDIF;

ENDIF;

ENDPROCESSP_REG;

P_DIV:

PROCESS(FULL)

VARIABLECNT2:

IFFULL'

EVENTANDFULL='

CNT2<

=NOTCNT2;

IFCNT2='

THENFOUT<

ELSEFOUT<

ENDPROCESSP_DIV;

1.根据如下原理图,将相应VHDL描述补充完整。

Libraryieee;

Useprojis

Port(ain,bin,clk:

Cout:

(1)std_logic);

Endproj;

Architectureoneof

(2)is

Signalt1,t2:

(3);

begin

(4)

Process(clk)begin

Ifclk’eventandclk=‘1’then

t1<

=bin;

Endprocess;

Process((5))begin

If(6)thencout<

=t2;

endif;

Endone;

2.用元件例化语句设计如图3-1所示电路。

LIBRARYieee;

--底层2输入与非门

USEnand2IS

PORT(A1,B1:

INstd_logic;

C1:

OUTstd_logic));

ENDnand2;

ARCHITECTUREa1OFnand2IS

C1<

=A1NANDB1;

ENDa1;

--顶层设计

USEyf4IS

PORT(A,B,C,D:

Z:

ENDyf4;

ARCHITECTUREaOFyf4IS

COMPONENTnand2

PORT(A1,B1:

ENDCOMPONENT;

SIGNALX,Y:

std_logic;

U1:

nand2PORTMAP(A,B,X);

U2:

nand2PORTMAP(C,D,Y);

U3:

nand2PORTMAP(X,Y,Z);

ENDa;

1.根据如图3-1所示原理图将相应的VHDL程序补充完整。

Useyuanlituis

Port(A,B,clk:

Qout:

Endyuanltu;

Architecturebehaveyuanlituis

Signals1,s2,s3:

Begin

s3<

=s1nands2;

Process(clk)

Begin

Ifclk’eventandclk=‘1’then

s1<

=A;

s2<

=B;

Endif;

Endprocess;

Process(clk,s3)

Ifclk=‘1’then

Qout<

=s3;

Endbehave;

1.以下VHDL程序实现

其中有两处错误,指出错误位置并改正。

01libraryieee;

02useuseentitytforis

05port(clk:

06data:

inintegerrange0to1000000;

07ma,mb:

outintegerrange0to1000000);

08endtfor;

09architectureaoftforis

10begin

11process(clk,data)

12variablem1,m2:

integerrange0to1000000;

13begin

14m1:

15m2:

16ifclk='

17foriindata'

rangeloop

18ifi>

=datathen

20exit;

21else

22m1:

=i+m1;

23m2:

=i+m2;

24endif;

25endloop;

26ma<

=m1;

mb<

=m2;

27endif;

28endprocess;

29enda;

18行,改为ifi>

datathen

23行,改为m2:

=i*i+m2;

1.8位二进制数判奇电路中有三处错误,指出错误位置并改正。

01LIBRARYIEEE;

02USE

03ENTITYp_checkIS

04PORT(a:

INSTD_LOGIC_VECTOR(7DOWNTO0);

05y:

06ENDp_check;

07ARCHITECTUREabcOFp_checkIS

08BEGIN

09PROCESS(a)

10VARIABLEtmp:

INTEGER;

11VARIABLEn:

INTEGER;

12BEGIN

13tmp:

='

14FORnin0TO7LOOP

15tmp:

=tmpXNORa(n);

16ENDLOOP;

17y<

=tmp;

18ENDPROCESS;

19ENDabc;

10行,改为VARIABLEtmp:

STD_LOGIC;

11行,去掉

15行,改为tmp:

=tmpXORa(n);

2.以下是时钟设计中模24计数器的VHDL设计,试补充完整。

02useuseentitycnt24is

05port(clk,clr:

06ten,one:

outstd_logic_vector(3downto0);

07co:

outstd_logic);

08end;

09architectureoneofcnt24is

10signalten_temp,one_temp:

std_logic;

11begin

12process(clk,clr)

14ifclr='

then

15ten_temp<

="

0000"

16one_temp<

17elsifclk'

18iften_temp=2andone_temp=3then

19ten_temp<

20one_temp<

21elsifone_temp=9then

22one_temp<

23ten_temp<

=ten_temp+1;

24elseone_temp<

=one_temp+1;

25endif;

26endif;

27endprocess;

28ten<

=ten_temp;

29one<

=one_temp;

30co<

whenten_temp=2andone_temp=4else'

31end;

10行,改为signalten_temp,one_temp:

std_logic_vector(3downto0);

30行,改为co<

whenten_temp=2andone_temp=3else'

2.已知一个简单的波形发生器的数字部分系统框图如下图所示:

图中DOWNCNT、MYROM都是在QuartusII中使用MegaWizard调用的LPM模块,其VHDL描述中Entity部分分别如下:

ENTITYDOWNCNTIS

PORT(clock:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC_VECTOR(5DOWNTO0));

ENDDOWNCNT;

ENTITYmyromIS

PORT(address:

INSTD_LOGIC_VECTOR(5DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDmyrom;

该系统的顶层VHDL设计如下,其中有两处错误,指出错误位置并改正。

01Libraryieee;

02UseEntitymysgis

04Port(clk:

05To_da:

outstd_logic_vector(7downto0));

06Endmysq;

07Architectureoneofmysqis

08Signaladdr:

std_logic_vector(5downto0);

09ComponentDOWNCNT

10Port(clock:

11Q:

outstd_logic_vector(5downto0));

12Endcomponent;

13Component

14Port(address:

instd_logic_vector(5downto0);

15Q:

16Endcomponent;

17Begin

18U1:

DOWNCNTportmap(clock=>

clk,q=>

addr);

19U2:

myromportmap(addr=>

address,q=>

to_da);

20Endone;

13行,改为Componentmyrom

19行,改为U2:

myromportmap(address=>

addr,q=>

 

--分频系数为5、占空比为1:

1的奇数分频器

usediv5is

port

(clk:

div5:

endentity;

architecturertlofdiv5is

signalcnt1:

std_logic_vector(2downto0);

signalcnt2:

signalclk_temp1:

signalclk_temp2:

constantm1:

integer:

=4;

--计数器控制端1,m1=N-1

constantm2:

=2;

--计数器控制端2,m2=(N-1)/2

process(clk)--上升沿触发计数器进程

ifclk'

ifcnt1=m1then

cnt1<

000"

else

cnt1<

=cnt1+1;

endif;

endif;

endprocess;

process(clk)--下降沿触发计数器进程

ifcnt2=m1then

cnt2<

cnt2<

=cnt2+1;

process(clk)--上升沿触发计数器的计数控制进程

ifcnt1=0then

clk_temp1<

elsifcnt1=m2then

process(clk)--下降沿触发计数器的计数控制进程

ifcnt2=0then

clk_temp2<

elsifcnt2=m2then

div5<

=clk_temp1orclk_temp2;

--将两个计数器控制的信号采用或逻辑

endrtl;

--占空比不是1:

1的偶数分频器,分频系数为6、占空比为1:

5的分频器

usediv6is

port(clk:

div6:

architecturertlofdiv6is

signalcnt:

signalclk_temp:

constantm:

=5;

--控制计数器的常量,m=N-1

process(clk)

if(rising_edge(clk))then

ifcnt=mthen

clk_temp<

cnt<

cnt<

=cnt+1;

div6<

=clk_temp;

--分频系数为7、占空比为1:

6的奇数分频器

usediv7is

port(clk:

div7:

architecturertlofdiv7is

=6;

div7<

--分频系数不是2的整数次幂的分频器

usediv12is

div12:

architecturertlofdiv12is

--控制计数器的常量,m=(N/2)-1

=notclk_temp;

--计数器值与m相等时clk_temp翻转

div12<

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

当前位置:首页 > 高等教育 > 艺术

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

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