📄 数据类型知识点.vhd
字号:
type byte is array (7 downto 0 )of std_logic;--一维数组
type mem1 is array (0 to 3,7 downto 0)of std_logic;--二维数组
type mem2 is array (0 to 3)of byte;--1*1维数组 4个矢量,每个矢量的位宽
--为8
type mem1 is array (0 to 3)of std_logic_vector(0 to 7);--1*1维数组
signal a: std_logic;--标量信号
signal b: bit;--标量信号
signal x: byte;--一维信号
signal y: std_logic_vector(7 downto 0);--一维信号
signal v: bit_vector(3 downto 0);--一维信号
signal z: std_logic_vector(x 'high downto 0 );--一维信号
signal w1:mem1;--二维信号
signal w2:mem2;--1*1维信号
signal w3:mem3;--1*1维信号
----------------合法的标量赋值----------------------------
x(2) <= 2; --同类型(std_logic),使用正确
y(0) <= x(0); --同类型(std_logic),使用正确
z(7) <= x(5); --同类型(std_logic),使用正确
b <=v (3); --同类型(bit),使用正确
w1(0,0) <= x(3); --同类型(std_logic),使用正确
w1(2,5) <= y(7); --同类型(std_logic),使用正确
w2(0) (0) <= x(2); --同类型(std_logic),使用正确
w2(2) (5) <= y(7); --同类型(std_logic),使用正确
w1(2,5) <=w2(3)(7); --同类型(std_logic),使用正确
------------非法的标量赋值-----------------------
b <=a; --bit和std_logic时数据类型不匹配
w1(0)(2) <=x(2); ----------w1的索引项必须是二维的
w2(2,0) <=a-;------------w2的索引项必须是1*1维的
--------------合法的矢量赋值-----------------
x <= "11111110";
y <= ('1' '1' '1' '1' '1' '1' '0' 'z' );
z <= "11111"&"000";
x <= (others => '1');
y <=(7=>'0', 1=>'0', others =>'1');
z <= y;
y(2 downto 0) <= z(6 downto 4);
w2(0)(7 downto 0) <="11110000";
w3(1) <= (others => '0');
w2 <=((others => '0'),(others => '0'),(others => '0'),(others => '0'));
w3 <=("11111100",('0' '0' '0' '0' 'z' 'z' 'z' 'z' ),(others => '0'),(others => '0'));
w1 <=((others => 'z'),"11110000","11110000",(others => '0'));
----------对数组进行初始化的一个实例-------------
for i in 0 to 3 loop;
for j in 7 downto 0 loop
x(j) <= '0';
y(j) <= '0';
z(j) <= '0';
w1(i,j) <='0';
w2(i)(j) <='0';
w3(i)(j) <='0';
end loop;
end loop;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -