硬體描述語言VHDL 並行語句

2021-09-17 01:14:40 字數 1684 閱讀 7278

並行語句是是硬體描述語言的特殊之處,這也是硬體描述語言不可少的一部分。硬體電路例如:匯流排,它需要多個輸入。這個時候,我們必須併發的給出匯流排上的資料。軟體程式語言也有併發,但是在效能要求不是苛刻的情形下,無需使用併發。軟體的併發由多執行緒和多程序來實現。

在vhdl中,併發語句是同時執行的。它們的書寫順序和執行順序沒有關係。在結構體中的並行語句主要有一下幾種:

程序語句;

並行訊號賦值語句;

並行過程呼叫語句;

元件例化語句;

生成語句;

塊語句。

訊號<=表示式;
with 選擇表示式 select

訊號<=表示式1 when 選擇值1,

表示式2 when 選擇值2,

......

表示式n when others; --最後一行這裡是分號。其餘行是逗號

with——select語句是當「選擇表示式」的值等於when後面的選擇值時,將when前面的表示式值賦給訊號。

訊號<=表示式1 when 賦值條件1 else

表示式2 when 賦值條件2 else

......

表示式n when 賦值條件n else

表示式; --最後一項可以不跟條件子句,用於表示以上賦值條件都不滿足的情形。

程序語句process是vhdl中最重要的語句之一。它的特點如下:

程序語句的格式如下

程序名:]process[(敏感訊號列表)]	--程序名不是必須的

[宣告區]; --定義程序內部使用的變數,不能在此處定義訊號,訊號在architecture中定義

begin

順序語句;

end process[程序名];

程序是由敏感訊號的變化來啟動的,因此可將時鐘作為程序啟動的敏感訊號。時鐘訊號的上公升沿和下降沿是我們最常使用的。當時鐘訊號clk是std_logic型別的時候,時鐘訊號在vhdl中的描述方法如下:

上公升沿描述:clk'event and clk = '1';

下降沿描述:clk'event and clk = '0';

除此之外,vhdl語言還預定義了兩個函式來描述上公升沿和下降沿。

上公升沿描述:rising_edge(clk);

下降沿描述:falling_edge(clk);

注意下面的錯誤格式:

--錯誤格式1

process(clk)

begin

if rising_edge(clk) then --不能同時對上公升沿和下降沿都敏感

......

elsif falling_edge(clk) then

......

end if;

end process;

--錯誤格式2

process(clk)

begin

if rising_edge(clk) then

......

else --不能有else,這相當於除了對上公升沿敏感,還對下降沿敏感

......

end if;

end process;

EDA硬體描述語言VHDL(二)

乙個完整的vhdl程式 稱為設計實體。1 庫和程式包呼叫宣告語句構成的模組 2 描述電路訊號埠和引數通道的實體模組 3 具體描述電路功能的結構體模組 entity 實體名 is generic 引數名 資料型別 port 埠表 資料型別 end entity 實體名 1 實體名 實體名最好根據相應電...

硬體描述語言VHDL 元件例化

vhdl語言的一大特點是 自頂向下 進行硬體設計。這樣的方式能最大化利用介面的優點。從系統的觀點來看,這是層次化的設計,有利於擴充套件。元件例化,簡單來說就是將以前設計的實體當做本設計的乙個元件,然後利用vhdl語句將各元件之間的連線關係描述出來。元件例化語句由兩部分組成,一部分是元件定義,即將現成...

Verliog HDL硬體描述語言學習筆記

第一次寫,這算自己的 作,多少還是有點緊張。寫這篇文章主要有兩個目的 一是想記錄一下自己對於verliog的學習程序 二是想分享一下自己的一些學習心得。如果有什麼地方寫的不足的地方或者什麼不對的地方還請大家多多指教。以下所有內容僅僅屬於個人見解,歡迎交流。數字積體電路設計流程 還有在這裡我想問一下類...