2015-09-13 51 views
1

陣列我想不通爲什麼VHDL這兩個作品具有相同的含義:預謀的元素或除

("0" & x) + y 

('0' & x) + ('0' & y)因爲我們在實體已經聲明

x,y : in unsigned(3 downto 0); 

"0" & x'0' & x有什麼區別? 此外,爲什麼我們應該使用邏輯函數在VHDL中創建如此困難的加法器,並且只需編寫x + y(包括進位的一個附加位)就足夠了?

回答

2

對於兩種情況:

  • "0" & x:頭部加上與'0'單個元件的陣列,以x
  • '0' & x:預先設置成單個元件'0'x

結果在這兩個案例是'x',前面加上了'0'的單個元素。

前面加上一個'0'如果目的地是比任何兩個源,xy的更長時,才需要的,因爲x + y將具有最長的xy長度。

+0

好的,但是x和y的類型是什麼?他們是陣列還是元素? 在我看來,它們都是4個元素的數組,但是爲什麼第二次寫入是正確的(鑑於第二種情況是針對元素而不是針對數組)? – George

+0

'unsigned'類型實際上是一個'std_logic'類型的數組,在這種情況下是一個包​​含4個元素的範圍爲3的數組。第二個寫入自VHDL定義爲兩個參數連接('&')作爲元素另一個操作數的類型,以及第一次寫入時使用的一維數組。 –

+2

對於元素或數組輸入的任何組合,「&」運算符都是爲任何單維數組類型預定義的。參見IEEE 1076-2005 9.2.5添加運算符。通過基本操作(5. Types,5.1 General),由上下文(9.3.2 Literals)確定的數組類型,根據上下文根據重載決議確定的字符文字類型,將字符文字和字符串文字轉換爲元素值和元素值數組5.2.2枚舉文字,5.2.2.1總則, - 特別見第6段,4.5子程序重載)。 – user1155120