日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 工業(yè)控制 > 電子設(shè)計自動化
[導(dǎo)讀]摘要:通過一個偶同位產(chǎn)生器邏輯功能的實現(xiàn)過程,介紹了VHDL語言中信號設(shè)置的不同方 式及注意事項,并給出了完整的程序代碼。關(guān)鍵詞:VHDL;程序中圖分類號:TP312 文獻標(biāo)識碼:A 文章編號:1003-353X(2002)03-0045-

摘要:通過一個偶同位產(chǎn)生器邏輯功能的實現(xiàn)過程,介紹了VHDL語言中信號設(shè)置的不同方 式及注意事項,并給出了完整的程序代碼。

關(guān)鍵詞:VHDL;程序

中圖分類號:TP312 文獻標(biāo)識碼:A 文章編號:1003-353X(2002)03-0045-03

Different expression andsome advertences of VHDL for signals setting He Feng(The 34th Electronic Research Institute,Ministry of Information Industry,Guilin 541004,China)

Abstract: This paper introduces how to use different expression of VHDL to set signals based on the Even Parity Bit Generator design, and the advertences and the whole programs are given.

Key words: VHDL;Program1概述 VHDL是一種快速的電路設(shè)計工具,功能涵蓋 了電路描述、電路合成、電路仿真等三大電路設(shè)計工作。目前廣泛使用的軟件有Altera公司出品的 MAX+PLUSII,Xinlinx公司的Foundation等。

VHDL語言中有兩種基本的語句命令:并行同 時語句命令以及順序語句命令。兩者之間最大的不同點是,并行同時語句命令就像是電路板的動作方 式,不論幾個命令,是一次且同時執(zhí)行,產(chǎn)生結(jié)果;順序語句命令類似一般的程序語言,如Basic 等的執(zhí)行方式,是一次一個命令,且依書寫方式由上而下地執(zhí)行。

并行同時語句命令主要有以下幾種表達方式: 直接設(shè)置語句(使用<=運算符)、條件式信號設(shè)置語句(When-Else)與選擇式信號設(shè)置語句 (With-Select-When)等;

順序語句命令主要有以下幾種表達方式:Pro cess(過程)、If-Else(判斷比較)、Wait Until(等待)、Case-Is-When(描述選擇)等。

熟練而靈活地使用上述兩類命令,可以節(jié)省大 量的工作量,使程序簡單直觀、可讀性增強而且有利于提高程序的編譯執(zhí)行效率。

在數(shù)據(jù)通信過程中,同位器與同位檢查器常用 于數(shù)據(jù)糾錯。本文就以一個簡單偶同位產(chǎn)生器(Even Parity Bit Generator)真值表功能的實現(xiàn)方法來探討上述表達方式選擇問題,以及編程 過程中的注意事項。

2編程舉例例:試設(shè)計VHDL程序完成如表1偶同位器的 真值表功能:

輸入輸出S2S1S0Z00000011010101101011101111001110分析:由真值表可以看出,所要實現(xiàn)的是一個由三個數(shù)據(jù)位、一個同位位組成的偶同位產(chǎn)生器功 能。不難得出各位之間的簡單邏輯關(guān)系:P=S0S1S2 。但是本文的主要目的在于通過此例闡述如何靈活運用不同的基本表達式設(shè)置信號,因此 某些可能更加簡單的方法以及比較高級一點語句本文不予詳細討論。

解: (注:VHDL語言中使用“--”作為注釋符號)library ieee; ①

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.

all;

ENTITY hf is --假設(shè)建立的芯片電路名稱以及保存后的文件名為“hf”;

Port (
s: in std_logic_vector(2 downto 0);
z: out std_logic--最后一個管腳定義命令后面,不可加分號;
);

end hf; --應(yīng)該保證電路單元名稱與存盤的文件名一致,否則編譯時 出錯;

ARCHITECTURE a OF hf ISBegin --以上是本例題解答過程中的公共部分,其后分別接各解法語句。--******************************

--解法1:使用“hen -Else”表達方式②z<=‘0’when (s="000") else --此語句只能將s的各個值分開寫,而不能寫成如下形式:0’ when (s="011") else -- z<=‘0’when (s="000" or s="011" or s="110" or s="111")0’ when (s="110") else -- else ‘1’;

‘0’ when (s="111") else

‘1’ when (s="001") else

‘1’ when (s="001") else

‘1’ when (s="001") else

‘1’;

End a;

--解法2:使用揥ith -Select -When表達方式:With s Selectz<=‘0’ when "000", --注意:除了最后一句的語句結(jié)束標(biāo)志是分號外,其余各句均是逗號;

‘0’ when "011",

‘0’ when "110",

‘0’ when "111", -- when后選擇信號的值也只能分別列出,不可寫成組合條件形式。
‘1’ when others;
End a;

--解法3:使用“If-Else”表達方式:Process --If-Else語句必須要與Process配合使用;Begin --Process中此句必不可少,否則編譯時出錯;if s="000" or s="011" or s="110" or s="111" then --If后若為組合條件可用括號也可不用;

z<=‘0’;
else
z<=‘1’;
end if;
end process;
End a;

--解法4:使用“Case-Is-When”表達方式:Process --“Case-Is-When”也只能與“Process”配合使用;Begincase s iswhen "000"|"011"|"110"|"111" =>--此處不能將“|”改成“or”但可以像解法1或解法1或解法2那樣將不同信號值分開寫;when others=> --When句末尾是“=>”而不是逗號或者分號。z<=‘1’;
end case;
end process;
End a;備注:(1) VHDL語言對所有字母的大小寫狀態(tài)不敏感,關(guān)鍵在于語句要正確規(guī)范。(2) 在VHDL語言中,所使用的標(biāo)點符號均是英文標(biāo)點符號。凡是設(shè)置單個的信號值均需使用 單引號,而設(shè)置序列信號值必須使用雙引號。(3) 請參看相關(guān)資料。

3討論3.1本例能否使用“Wait Until”表達方式很遺憾,類似此例的情況不能使用這個語 句。起碼筆者經(jīng)過多次嘗試之后均沒有通過編譯檢查。但是在使用此語句時應(yīng)該注意以下事項:

(1) Wait Until 后面緊接的語句中不能出現(xiàn)序列信號的值,例如不能寫成如下形式:Wait Until s="000" 也不能寫成組合條件形式(無論是否使用括號):Wait Until s="000" or s="011" or s="110" or s="111"

(2) 使用此表達方式編寫程序代碼時,不能設(shè)定輸出引腳的初始值(通過第三方信號傳遞也不 行,但是在進行仿真時可以設(shè)定初始輸出值),不能寫成如下形式:……s: in std_logic;……Architecture a of hf isBeginz<=0; --就算z的初、終值通過兩個常量信號(如c=‘0’,d=‘1 ’)傳遞Process --也不行,因為z不能規(guī)定兩個狀態(tài)。否則編譯時出錯;Beginwait until s=‘0’; --此處也不可以寫成序列信號形式,更不能使用邏輯運算符將其z<=1; --寫成組合條件形式。Wait Until語句不支持組合條件。End process;
END a;

3.2更簡單的實現(xiàn)方法順序語句除了前文所敘的幾種基本表達方式以 外,還有一種循環(huán)語句:For-Loop;而并行同時語句也還有方塊語句(Block)、組件定義(Component)與組件映像(Port Map)等多個模塊化語法。而使用“For-Loop”編寫此類有重復(fù)動作需求的代碼無疑是最簡單直觀的:……
Architecture a OF hf IS
Begin
Process(s)
Variable Tmp: Std_Logic;
Begin
Tmp:=‘0’;
For I In 0 to 2 Loop
Tmp:=Tmp XOR s(I);
End Loop;
Z<=s & Tmp;
End Process;
End a;

其他更加簡單的方法,限于篇幅與本文主 旨,在此就不予深究了。

4結(jié)束語從以上不同解法可以看出,各種基本的表達方式均有各自的特點:采用“When -Else”表達式(解法1)與“When -Else-When”表達式(解法2)編寫編寫代碼的優(yōu)點是直觀,但是代碼很多,欲實現(xiàn)復(fù) 雜的功能時工作量將會很大;采用“IF-Else”表達式(解法4)編寫代碼的優(yōu)點是直觀與簡單并舉,尤其是允許使用由邏輯運算符(And、Or等等)寫成的組合條件更是精簡了不少代碼。另外,在編寫VHDL程序的過程中,不同的 表達式中,表示語句結(jié)束的符號是不同的,這一點在 我們學(xué)習(xí)和使用VHDL的過程中值得特別留意。

參考文獻 [1]盧毅、賴杰 .VHDL與數(shù)字電路設(shè)計.北京:科學(xué)出版社,2001-04[2]李廣軍、孟憲元 .可編程ASIC設(shè)計及應(yīng)用.成都:電子科技大學(xué)出版社.2000-10[3]徐志軍等.大規(guī)??删幊踢壿嬈骷捌鋺?yīng)用.成都:電子科技大學(xué)出版社.2000-11何鋒 男,1979年出生,本科,研究方向為硬件描述語言設(shè)計,嵌入式系統(tǒng)開發(fā)。



來源:零八我的愛0次

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉