欢迎来到天天文库
浏览记录
ID:49202076
大小:1.83 MB
页数:33页
时间:2020-02-01
《CH9_程序处理与状态机 电路设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1程序處理與狀態機電路設計第九章儒林圖書公司TB061VHDL數位電路設計實務教本使用QuartusIICase-when敘述指令2Case-when指令本身是敘述組合邏輯的,但它卻必須在Process指令中執行,因此它是序向邏輯指令之一,其語法如下:Case選擇訊號ISWhen選擇訊號1=>敘述命令1;When選擇訊號2=>敘述命令2;:WhenOthers=>敘述命令N;EndCase;Case-when敘述指令Example:四對一的多工器設計3libraryIEEE;useIEEE.STD_LOGIC_1164.all;ENTITYmux4to1_caseISPORT(S:INS
2、TD_LOGIC_VECTOR(1downto0);D0,D1,D2,D3:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDmux4to1_case;ARCHITECTUREaOFmux4to1_caseISBEGINprocess(S)BeginCaseSISWhen"00"=>Y<=D0;When"01"=>Y<=D1;When"10"=>Y<=D2;WhenOthers=>Y<=D3;EndCase;EndProcess;ENDa;Case-when敘述指令Example:一對四的解多工器設計4libraryIEEE;useIEEE.STD_LOGIC_1164.al
3、l;ENTITYdemux1to4_caseISPORT(data:INSTD_LOGIC;S:INSTD_LOGIC_VECTOR(1downto0);D0,D1,D2,D3:OUTSTD_LOGIC);ENDdemux1to4_case;ARCHITECTUREaOFdemux1to4_caseISBEGINprocess(S,data)BeginD0<='0';D1<='0';D2<=‘0’;D3<=‘0’;CaseSISWhen"00"=>D0<=data;When"01"=>D1<=data;When"10"=>D2<=data;WhenOthers=>D3<=data;End
4、Case;EndProcess;ENDa;Case-when敘述指令Example:JK正反器設計5libraryieee;useieee.std_logic_1164.all;entityJK_ffisport(clk:instd_logic;J,K:instd_logic;rst:instd_logic;Q,Qbar:outstd_logic);endJK_ff;architectureaofJK_ffissignaltemp:std_logic;signalx:std_logic_vector(1downto0);beginx<=J&K;process(clk,rst)begini
5、f(rst='1')thentemp<='0';elsifclk'eventandclk='1'thencase(x)iswhen“11”=>temp<=nottemp;when"10"=>temp<='1';when"01"=>temp<='0';whenothers=>null;endcase;endif;endprocess;Q<=temp;Qbar<=nottemp;enda;Case-when敘述指令Example:ALU設計6C00001111S100110011S001010101OperationF<=A;F<=AandB;F<=AorB;F<=NotA;F<=A+B;F
6、<=A-B;F<=A+1;F<=A-1;libraryIEEE;useIEEE.STD_LOGIC_1164.all;useIEEE.std_logic_unsigned.all;ENTITYaluISPORT(C:instd_logic;S:INSTD_LOGIC_VECTOR(1downto0);A,B:INSTD_LOGIC_VECTOR(7downto0);F:OUTSTD_LOGIC_VECTOR(7downto0));ENDalu;Case-when敘述指令Example:ALU設計(續)7ARCHITECTUREaOFaluISBEGINprocess(s,A,B)Begi
7、nIFC='0'then--當C=’0’時執行邏輯運算CasesISWhen"00"=>F<=A;When"01"=>F<=AandB;--AND邏輯運算When"10"=>F<=AorB;--OR邏輯運算Whenothers=>F<=NotA;--NOT邏輯運算ENDcase;ELSE--當C=’1’時執行算術運算CasesISWhen"00"=>F<=A+B;--加法運算When"01"=>F<=A-B;--減法運算When"1
此文档下载收益归作者所有