MAXPLUS软件的使用第3章 第7节.docx

上传人:b****1 文档编号:10944688 上传时间:2023-05-28 格式:DOCX 页数:12 大小:272.78KB
下载 相关 举报
MAXPLUS软件的使用第3章 第7节.docx_第1页
第1页 / 共12页
MAXPLUS软件的使用第3章 第7节.docx_第2页
第2页 / 共12页
MAXPLUS软件的使用第3章 第7节.docx_第3页
第3页 / 共12页
MAXPLUS软件的使用第3章 第7节.docx_第4页
第4页 / 共12页
MAXPLUS软件的使用第3章 第7节.docx_第5页
第5页 / 共12页
MAXPLUS软件的使用第3章 第7节.docx_第6页
第6页 / 共12页
MAXPLUS软件的使用第3章 第7节.docx_第7页
第7页 / 共12页
MAXPLUS软件的使用第3章 第7节.docx_第8页
第8页 / 共12页
MAXPLUS软件的使用第3章 第7节.docx_第9页
第9页 / 共12页
MAXPLUS软件的使用第3章 第7节.docx_第10页
第10页 / 共12页
MAXPLUS软件的使用第3章 第7节.docx_第11页
第11页 / 共12页
MAXPLUS软件的使用第3章 第7节.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MAXPLUS软件的使用第3章 第7节.docx

《MAXPLUS软件的使用第3章 第7节.docx》由会员分享,可在线阅读,更多相关《MAXPLUS软件的使用第3章 第7节.docx(12页珍藏版)》请在冰点文库上搜索。

MAXPLUS软件的使用第3章 第7节.docx

MAXPLUS软件的使用第3章第7节

3.7综合练习

例1:

一位二进制计数加七段译码电路AHDL设计如下,该设计中调用了老功能模块”4count”和七段译码器设计文件7segment.tdf。

设计源文件:

FUNCTION4count(clk,clrn,setn,ldn,cin,dnup,d,c,b,a)%库中有此模块%

RETURNS(qd,qc,qb,qa,cout);

FUNCTION7segment(i3,i2,i1,i0)%见前面的例题%

RETURNS(g,f,e,d,c,b,a);

SUBDESIGN4cnt7s

clk,dnup:

INPUT;

sa,sb,sc,sd,se,sf,sg,out,xs[3..0]:

OUTPUT;

VARIABLE

counter:

4count;

decoder:

7segment;

BEGIN

counter.clk=clk;

counter.dnup=dnup;

decoder.i[3..0]=counter.(qd,qc,qb,qa);

xs[]=counter.(qd,qc,qb,qa);

(sg,sf,se,sd,sc,sb,sa)=decoder.(g,f,e,d,c,b,a);

out=counter.cout;

END;

该设计的仿真结果见图3.7.1。

图3.7.1

例2:

N位计数译码电路

四位十进制计数器AHDL设计文件(pdec9999.tdf):

SUBDESIGNpdec9999

clk,ena,clrs:

INPUT;

a[15..0]:

OUTPUT;

VARIABLE

count1[3..0]:

DFF;

count2[3..0]:

DFF;

count3[3..0]:

DFF;

count4[3..0]:

DFF;

BEGIN

count1[].clk=clk;

count1[].clrn=clrs;

count2[].clk=clk;

count2[].clrn=clrs;

count3[].clk=clk;

count3[].clrn=clrs;

count4[].clk=clk;

count4[].clrn=clrs;

IFenaTHEN

ifcount1[]==B"1001"then

count1[]=B"0000";

ELSE

count1[].d=count1[].q+1;

ENDIF;

ELSE

count1[].d=count1[].q;

ENDIF;

IFenaTHEN

ifcount1[]==B"1001"then

ifcount2[]==B"1001"then

count2[]=B"0000";

ELSE

count2[].d=count2[].q+1;

ENDif;

ELSE

count2[].d=count2[].q;

endif;

ELSE

count2[].d=count2[].q;

ENDIF;

IFenaTHEN

ifcount2[]==B"1001"&count1[]==B"1001"then

ifcount3[]==B"1001"then

count3[]=B"0000";

ELSE

count3[].d=count3[].q+1;

endif;

ELSE

count3[].d=count3[].q;

endif;

ELSE

count3[].d=count3[].q;

ENDIF;

IFenaTHEN

ifcount2[]==B"1001"&count1[]==B"1001"&count3[]==B"1001"then

ifcount4[]==B"1001"then

count4[]=B"0000";

ELSE

count4[].d=count4[].q+1;

endif;

ELSE

count4[].d=count4[].q;

endif;

ELSE

count4[].d=count4[].q;

ENDIF;

a[3..0]=count1[];

a[7..4]=count2[];

a[11..8]=count3[];

a[15..12]=count4[];

END;

七段译码器设计文件(7segd.tdf):

SUBDESIGN7segd

i[3..0]:

INPUT;

s[6..0]:

OUTPUT;

BEGIN

TABLE

i[3..0]=>s[6..0];

H"0"=>B"1111110";

H"1"=>B"0110000";

H"2"=>B"1101101";

H"3"=>B"1111001";

H"4"=>B"0110011";

H"5"=>B"1011011";

H"6"=>B"1011111";

H"7"=>B"1110000";

H"8"=>B"1111111";

H"9"=>B"1111011";

H"A"=>B"1110111";

H"B"=>B"0011111";

H"C"=>B"1001110";

H"D"=>B"0111101";

H"E"=>B"1001111";

H"F"=>B"1000111";

ENDTABLE;

END;

四位十进制计数并七段译码设计,该设计中调用了设计文件7segd.tdf和pdec9999.tdf

FUNCTION7segd(i[3..0])

RETURNS(s[6..0]);

FUNCTIONpdec9999(clk,ena,clrs)

RETURNS(a[15..0]);

SUBDESIGN4dec7sp

clk,ena,clrs:

INPUT;

sd1[6..0],sd2[6..0],sd3[6..0],sd4[6..0]:

OUTPUT;

VARIABLE

cntn:

pdec9999;

decd1,decd2,decd3,decd4:

7segd;

BEGIN

cntn.clrs=clrs;

cntn.clk=clk;

cntn.ena=ena;

decd1.i[]=cntn.a[3..0];

decd2.i[]=cntn.a[7..4];

decd3.i[]=cntn.a[11..8];

decd4.i[]=cntn.a[15..12];

sd1[]=decd1.s[];

sd2[]=decd2.s[];

sd3[]=decd3.s[];

sd4[]=decd4.s[];

END;

该设计的仿真结果见图3.7.2:

图3.7.2

该电路可以形成在图形编辑器中使用符号图3.7.3。

图3.7.3

例三:

四位十进制扫描式七段译码显示设计

本设计调用了如下文件:

7segment.tdf

pdec9999.tdf

decoder.tdf

mux24.tdf

老功能模块:

4count

其中7segment.tdf(3.6节例3)、decoder.tdf(3.6节例7)和pdec9999.tdf(本节例2)中已经使用过了,下面列出和mux24.tdf文件。

多路选择器(mux24.tdf)文件如下:

SUBDESIGNmux24

sel[1..0],inp[3..0]:

INPUT;

sc:

OUTPUT;

BEGIN

ifsel[]==B"00"then

sc=inp[0];

ELSIFsel[]==B"01"then

sc=inp[1];

ELSIFsel[]==B"10"then

sc=inp[2];

ELSIFsel[]==B"11"then

sc=inp[3];

ENDIF;

END;

四位十进制扫描式七段译码显示设计文件:

FUNCTION7segment(i3,i2,i1,i0)

RETURNS(g,f,e,d,c,b,a);

FUNCTIONpdec9999(clk,ena,clrs)

RETURNS(a[15..0]);

FUNCTIONdecoder(code[1..0])

RETURNS(out[3..0]);

FUNCTIONmux24(sel[1..0],inp[3..0])

RETURNS(sc);

FUNCTION4count(clk,clrn,setn,ldn,cin,dnup,d,c,b,a)

RETURNS(qd,qc,qb,qa,cout);

SUBDESIGN47sm

clk,ena,clrs,clk1:

INPUT;

g,f,e,d,c,b,a,yinji[3..0]:

OUTPUT;

VARIABLE

count4:

pdec9999;

seven:

7segment;

mux1,mux2,mux3,mux4:

mux24;

count1:

4count;

yima:

decoder;

BEGIN

count4.clrs=clrs;

count4.clk=clk;

count4.ena=ena;

count1.clk=clk1;

count1.clrn=!

ena;

yima.code[1]=count1.qb;

yima.code[0]=count1.qa;

mux1.sel[1]=count1.qb;

mux1.sel[0]=count1.qa;

mux2.sel[1]=count1.qb;

mux2.sel[0]=count1.qa;

mux3.sel[1]=count1.qb;

mux3.sel[0]=count1.qa;

mux4.sel[1]=count1.qb;

mux4.sel[0]=count1.qa;

mux1.inp[0]=count4.a[0];

mux1.inp[1]=count4.a[4];

mux1.inp[2]=count4.a[8];

mux1.inp[3]=count4.a[12];

mux2.inp[0]=count4.a[1];

mux2.inp[1]=count4.a[5];

mux2.inp[2]=count4.a[9];

mux2.inp[3]=count4.a[13];

mux3.inp[0]=count4.a[2];

mux3.inp[1]=count4.a[6];

mux3.inp[2]=count4.a[10];

mux3.inp[3]=count4.a[14];

mux4.inp[0]=count4.a[3];

mux4.inp[1]=count4.a[7];

mux4.inp[2]=count4.a[11];

mux4.inp[3]=count4.a[15];

seven.i[0]=mux1.sc;

seven.i[1]=mux2.sc;

seven.i[2]=mux3.sc;

seven.i[3]=mux4.sc;

g=seven.g;

f=seven.f;

e=seven.e;

d=seven.d;

c=seven.c;

b=seven.b;

a=seven.a;

yinji[3..0]=yima.out[3..0];

END;

该四位十进制扫描式七段译码显示的仿真结果见图3.7.4。

图3.7.4

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2