VHDL注意事項

2021-05-01 16:36:33 字數 2424 閱讀 5374

注:

1.integer 的取值可用符號的32位2進製數表示。

2.需要注意的是,vhdl **器將integer型別作為有符號數處理,而vhdl綜合器則將integer作為無符號數處理。而且vhdl綜合器要求必須使用rang子句為所定 義的數限定範圍,然後根據所限定的範圍來確定此訊號或變數的2進製的位數,因為vhdl綜合器無法綜合未限定範圍的惡整數型別的訊號和變數。

3.整數在表示式中不加引號,而邏輯數必須加引號,一位的加單引號,一位以上的加雙引號。

4.natural,positive 為integer的子型別。

signal可作為內部的節點,這就決定它不需要像埠那樣定義模式,即資料i流動不受方向限制,可用來建立暫存器等。

vhdl規定加減等算數操作符對應的運算元只能是integer,而當不同資料型別間運算操作的時候就要呼叫運算子過載函式 ieee庫中的std_logic_unsigned程式包中,其中預定義的操作符有+、-、*、=、>=、<=、>、<、/=、and、mod等,用法如下:

library ieee;

use ieee_logic_unsigned.all

signal d1,d3 :std_logic_vector(4 dwonto 0)

veriable d2,d4:std_logic_vector(15 downto 0)

d1<=(others=>'0');

d2:=(1=>'1',4=>'1',others=>'0');

d3<=(1=>d1(3),3=>d2(3)???,others=>d1(2));

所謂同步非同步都是對於時鐘訊號而言的,不依賴於時鐘而有效的訊號稱為非同步訊號,否則稱為同步訊號。

穿行並行,我的理解是如果將乙個vector一次性一次送性的給另乙個vector的話就是並行,如果是乙個bit乙個bit的送的話就是序列。

vhdl中的資料物件有三種,常量(constant)、變數(veriable)、訊號(signal),用來描述目標量的屬性的。

常量(constant),允許的三個設計單元有實體,結構體,程式包,塊,程序,子程。常量的可視性,即常量的作用範圍決定於它被定義的位置:包=>實體=>結構體=>程序等。signal 也有the same attribute. 

變數(veriable),是乙個區域性量,只作用於在定義了變數的process和subprogram的順序語句裡面,而且變數的資料傳輸沒有延時行為。變數的主要作用是在程序中作為臨時的資料儲存單元(當前)。 

訊號(signal),信 號的define 和使用的範圍為entity,architecture和package,而不能在process和subprogram的順序語句 中。而且,在沒有作特殊設定時,訊號也有乙個最小傳輸延時,它的硬體特徵更為明顯,類似於連線線,可以作為設計實體並行語句模組間的資訊交流通道,它即可 以儲存當前值也可以儲存歷史值,和觸發器的記憶功能有很好的對應關係,只是不必care訊號上的資料流動方向。關於訊號的初始值的設定和veriable 一樣,因為電路上電後的隨機性,因此綜合器並不支援設定初始值。由於process的敏感列表裡可以有訊號,那麼訊號就能把process外部的資訊引入 或傳出.在process中,當多個同名訊號被賦值,只執行最後乙個,因為當遇到end process的時候才對signal賦值。但是當並行語句中卻 不允許同一訊號有多個驅動源的。 

硬體電路系統上來看,變數和訊號相當於電路系統中的連線和連線上傳輸的訊號,常量相當於電路中的恆定電平,如gnd和vcc。在不完整條件語句中,變數和訊號有同樣的功能都能。  

關於process(clk) begin

if clk'event and clk='1' then

a<=d;        --d,q為port,a,b為signal    

b<=a;

q<=b;

end if ;

end  process;中的一些問題!

首先,此程序描述的是當clk上公升沿發生時,將訊號由port d輸入到a到b,再由port q輸出。

下面要說的是這個程序執行時的幾個問題。

首先,此程序執行的時候,a的賦值,b的賦值,q的賦值是並行執行的,也就是說a,b,q的賦值是同時的。但這是在程序中,也就是說應該先將a賦 值,再將a的值賦給b,最後把b的值由q輸出,這樣乙個順序執行,為什麼會是並行執行的呢?為什麼賦值結束後q輸出的值並不是d輸入的值呢,而是上一時鐘 b的值?

這是因為,對於某乙個時鐘週期的訊號,確實是按從a到b到q的順序傳輸的。而對於同乙個時鐘,各個節點上的訊號都不是當前其上乙個節點上的訊號,原 因很簡單,就是因為要有乙個固定延時賦值才完成。也就是說q輸出的值是b上一時鐘的值,而b被更新的值是上一時鐘a的值... ...而當前這個時刻,每乙個乙個節點的值都是被賦給的新值,也就是說,在這個固定延時時間裡,各個節點被賦值是同時發生的。

這個程序中的訊號的順序賦值,很完美的體現了硬體行為,即整體描述了乙個訊號是如何在節點之間傳遞的,又描述出每個時鐘的訊號都是如何在節點之間動作的,這就是hdl的魅力吧!~呵呵

java DOM 注意事項

1.w3c把標籤內的文字部分也定義成乙個node 2.element物件代表的是xml文件中的標籤元素 繼承於node,亦是node的最主要的子物件 3.attr實際上是包含在element中的,它並不能被看作是element的子物件,因而在dom中attr並不是dom樹的一部分,所以node中的 ...

static注意事項

static關鍵字是c,c 中都存在的關鍵字,它主要有三種使用方式,其中前兩種只指在c語言中使用,第三種在c 中使用 c,c 中具體細微操作不盡相同,本文以c 為準 1 區域性靜態變數 2 外部靜態變數 函式 3 靜態資料成員 成員函式 下面就這三種使用方式及注意事項分別說明 一 區域性靜態變數 在...

CSS注意事項

一 寬度 高度 對齊方式請別忘記他們 只要你時刻記得 div css 不變形的秘密你已經掌握了 90 也有對齊方式哦!一定要掌握當 對齊方式不同是 布局出現的問題!左右左 能不變形嗎?預設 是要換行的哦 div css的 居中對齊 是有條件的哦 所有當同級元素的對齊方式都為居中對齊的時候可以採用居中...