【文章內(nèi)容簡(jiǎn)介】
case 語(yǔ)句 case 語(yǔ)句常用來(lái)描述總線或編碼、譯碼行為。 可讀性比 if 語(yǔ)句強(qiáng)。 格式如下: case 表達(dá)式 is when 分支 條件 = 順序處理語(yǔ)句; when 分支條件 = 順序處理語(yǔ)句; when 分支條件 = 順序處理語(yǔ)句; end case; ┇ 其中的分支條件可有以下的形式: when 值 = 順序處理語(yǔ)句; when 值 to 值 = 順序處理語(yǔ)句; when 值 |值 |值 |?| 值 = 順序處理語(yǔ)句; 以上三種方式的混合; when others = 順序處理語(yǔ)句; Case 語(yǔ)句使用注意: 1)分支條件的值必須在表達(dá)式的取值范圍內(nèi)。 2)兩個(gè)分支條件不能重疊。 3) CASE語(yǔ)句執(zhí)行時(shí)必須選中,且只能選中一 個(gè)分支條件。 4)如果沒(méi)有 others分支條件存在,則分支條 件必須覆蓋表達(dá)式所有可能的值。 對(duì) std_logc, std_logic_vector數(shù)據(jù)類(lèi)型要特別注意使用 others分支條件。 例:用 case 語(yǔ)句描述四選一電路 例: case 語(yǔ)句的誤用 signal value:integer range 0 to 15。 signal out_1 : bit 。 case value is 缺少 when條件語(yǔ)句 end case 。 case value is 分支條件不包含 2到 15 when 0 = out_1 = ‘ 1’ 。 when 1 = out_1 =‘ 0’ 。 end case 。 case value is 在 5到 10上發(fā)生重疊 when 0 to 10 = out_1 = ‘ 1’ 。 when 5 to 15 = out_1 = ‘ 0’ 。 end case 。 例:根據(jù)輸入確定輸出值 library ieee。 use 。 entity mux41 is port(s4,s3,s2,s1: in std_logic。 z4,z3,z2,z1: out std_logic)。 end mux41。 architecture art of mux41 is begin process(s4, s3, s2, s1) variable sel: integer range 0to15。 begin sel:=0。 if s1=‘ 1’ then sel:=sel+1。 end if。 if s2=‘ 1’ then sel:=sel+2。 end if。 if s3=‘ 1’ then sel:=sel+4。 end if。 if s4=‘ 1’ then sel:=sel+8。 end if。 z1=‘ 0’ 。 z2=‘ 0’ 。 z3=‘ 0’ 。 z4=‘ 0’ 。 case sel is when 0 =z1=‘ 1’ 。 when 1|3 =z2=‘ 1’ 。 when 4 to 7|2 =z3=‘ 1’ 。 when others =z4=‘ 1’ 。 end case。 end process。 end art。 常用的并行描述語(yǔ)句有: ? 進(jìn)程( process)語(yǔ)句、 ? 塊( block)語(yǔ)句、 ? 順序描述語(yǔ)句的并行版本、 ? 并行過(guò)程調(diào)用語(yǔ)句、 ? 元件例化語(yǔ)句、 ? 生成語(yǔ)句。 一、進(jìn)程( process)語(yǔ)句 進(jìn)程( process)語(yǔ)句最具 VHDL語(yǔ)言特色。提 供了一種用算法描述硬件行為的方法。 特點(diǎn): 進(jìn)程與進(jìn)程,或其它并發(fā)語(yǔ)句之間的并發(fā)性; 進(jìn)程內(nèi)部的順序性; 進(jìn)程的啟動(dòng)與掛起; 進(jìn)程與進(jìn)程,或其它并發(fā)語(yǔ)句之間的