常用电路VHDL描述学习教案.pptx
上传人:王子****青蛙 上传时间:2024-09-13 格式:PPTX 页数:26 大小:170KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

常用电路VHDL描述学习教案.pptx

常用电路VHDL描述学习教案.pptx

预览

免费试读已结束,剩余 16 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

会计学ARCHITECTUREbhvOFDFFl1SBEGINPROCESS(CLK)BEGINIFCLK’EVENTANDCLK=‘1’THENQ<=D;ENDIF;ENDPROCESS;ENDbhv;IF语句的完整格式为:IF-THEN-ELSE-ENDIF。通常,完整的条件语句只能构成组合逻辑电路。VHDL利用不完整的条件语句的描述引进寄存器元件,从而构成时序电路的方式是VHDL描述时序电路最重要的途径。注意在利用条件语句进行(jìnxíng)纯组合电路设计时,要充分考虑电路中所有可能出现的问题,当没有列全所有的条件及其对应的处理方法,会导致不完整的条件语句的描述,从而产生设计者不希望的时序电路。【例5-17】与门的错误描述(miáoshù):如果输入A、B同时为1,输出C就为1。ARCHITECTUREbehaveOFand2ISBEGINPROCESS(a,b)BEGINIF(a=‘1’ANDb=‘1’)THENc<=‘1’;ENDIF;ENDPROCESS;ENDbehave;【例5-18】1位数据比较器的错误(cuòwù)描述。ARCHITECTUREOneOFCOMP_BADISBEGIHPROCESS(al,b1)BEGINIFa1>blTHRNql<=’1’;ELSIFal<blTHENql<=’0’;ENDIF;ENDPROCESS;ENDOne;5.4.2加法器ARCHITECTUREbehaveOFadder8ISSIGNALhalfadd,fulladd:std_logic_vector(8DOWNTO0);BEGINhalfadd<=data1+data2;fulladd<=halfaddWHENci=‘0’ELSEhalfadd+1;result<=fulladd(7DOWNTO0);co<=fulladd(8);ENDbehave;5.4.3译码器ARCHITECTUREBODYOFHEXLEDISBEGINPROCESS(HEX)BEGINCASEHEXISWHEN"0000"=>led<="0111111";WHEN"0001"=>led<="0000110";WHEN"0010"=>led<="1011011";WHEN"0011"=>led<="1001111";WHEN"0100"=>led<="1100110";WHEN"0101"=>led<="1101101";WHEN"0110"=>led<="1111101";WHEN"0111"=>led<="0000111";5.4.4编码器ARCHITECTUREbehaveOFencoderISBEGINq<=“111”WHENd(7)=‘1’ELSE“110”WHENd(6)=‘1’ELSE“101”WHENd(5)=‘1’ELSE“100”WHENd(4)=‘1’ELSE“011”WHENd(3)=‘1’ELSE“010”WHENd(2)=‘1’ELSE“001”WHENd(1)=‘1’ELSE“000”WHENd(0)=‘1’ELSE“000”;ENDbehave;【例5-23】8-3优先(yōuxiān)编码器。用IF语句。实体略。5.4.5三态门输出(shūchū)电路ARCHITECTUREbehaveOFtrioutISBEGINdata_out<=data_inWHENoe_en=‘1’ELSE(OTHERS=>‘Z’);ENDbehave;5.4.7移位(yíwèi)寄存器同步清零(qīnɡlínɡ)(RES=1),同步置数(MODE=11),可左移(MODE=10),右移(MODE=00)WHEN“10”=>qout<=qout(6DOWNTO0)&sr_in;--左移WHEN“11”=>qout<=data;--置数WHENOTHERS=>NULL;ENDCASE;ENDIF;ENDIF;ENDPROCESS;ENDbehave;5.4.8M=60的计数器ARCHITECTUREbehaveOFcntm60ISBEGINco<=‘1’WHEN(qh=5ANDql=9ANDci=‘1’)ELSE‘0’;PROCESS(clk,nreset)BEGINIF(nreset=‘0’)THENqh<=“000”;ql<=“0000”;ELSIF(clk’eventANDclk=‘1’)THENIF(load=‘1’)THENqh<=d(6DOWNTO4);ql<=d(3DOWNTO0);ELSIF(ci=‘1’)THENIF(ql=9)THENql<=“0000”