串联 VHDL(2 个 8 位向量)

Concatenation VHDL (2 8-bit vectors)

我只是想知道,如何将两个 8 位向量连接成一个 16 位向量,其中 odata_H 具有 MSB,odata_L 具有 LSB?任何帮助,将不胜感激。矢量是 ADT7420 温度传感器发出的数据点。

signal BCD:             std_logic_vector(11 downto 0);
signal Bin_Temp:        std_logic_vector(7 downto 0);
signal Bin_Acc:         std_logic_vector(7 downto 0);
signal Buff_Temp:     std_logic_vector(7 downto 0);
signal Buff_Acc:      std_logic_vector(7 downto 0);
signal odata_L:         std_logic_vector(7 downto 0);
signal odata_H:         std_logic_vector(7 downto 0);
signal notEN:           std_logic;
signal odataT:          std_logic_vector(15 downto 0);
   begin
odataT <= odata_H & odata_L;
Bin_Temp <= odataT(8 downto 1);
notEN <= not(EN);

我不知道为什么在这种情况下串联显然不起作用。尽管如此,实现它的另一种方法是使用 numeric_std 库的 resize() 函数。

library ieee;
use ieee.numeric_std.all;

[...]
odataT <= std_logic_vector(resize(signed(odata_H), odata_L'length));

串联 (odata_H, odata_L) 的大小将调整为 length 的长度(在本例中为 16)。 当然 unsigned 而不是 signed 是可能的,如果适用的话。