vhdl如何将vector赋值给logic

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vhdl如何将vector赋值给logic相关的知识,希望对你有一定的参考价值。

参考技术A 设reg8是8位的,reg16是16位的
则reg8
=
reg16(7
downto
0)是把reg16的低8位赋值给reg8
如果reg是1位的
则可以通过reg
=
reg16[3]将reg16的第4位赋值给reg
参考技术B 每个vector存储一个一维的数组,这个好理解,那么再用一个vector,这个vector每一个元素存储一个一维数组的vector,所以就是二维的了。
vector
>
matrix(row,vector(col,0));
这个代码的含义是:
vector
>
外层的vector就是那个用于存储vector的,是第二维,它包含row个一维的vector,而每一个一维的vector包含col个int。后面的matrix里面是调用了vector的构造函数进行这个结构的构造。

你好。请问这个VHDL程序的测试程序要如何写?要在modelsim里运行的。。

8位移位寄存器的程序:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SHFT IS
PORT ( CLK, LOAD : IN STD_LOGIC;
DIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
DOUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
QB : OUT STD_LOGIC );
END SHFT;
ARCHITECTURE behav OF SHFT IS
SIGNAL REG8 : STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
PROCESS (CLK, LOAD)
BEGIN
IF CLK'EVENT AND CLK = '1' THEN
IF LOAD ='1' THEN REG8 <= DIN;
ELSE REG8(6 DOWNTO 0) <= REG8(7 DOWNTO 1);
END IF;
END PROCESS;
QB <= REG8(0); DOUT<=REG8;
END behav;

我要在modelsim里进行波形的时序分析,可貌似没有测试程序的话就仿真不了。。。谁能帮我写下测试程序吗??万分感激!!!

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity top is
port(DOUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
QB : OUT STD_LOGIC);
end top;

use work.all;
architecture Behavioral of top is
constant clk_period:time:=20 ns;
signal CLK,LOAD: STD_LOGIC;
signal DIN: STD_LOGIC_VECTOR(7 DOWNTO 0);
component shft
port(CLK,LOAD:IN STD_LOGIC;
DIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
DOUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
QB : OUT STD_LOGIC );
end component;
begin
g1:shft port map(clk,load,din,dout,qb);
clk_en:process
begin
clk<='1';
wait for clk_period/2;
clk<='0';
wait for clk_period/2;
end process;
en:process
begin
din<="10101010";
load<='1' after 40 ns,
'0' after 80 ns,
'1' after 120 ns,
'0' after 160 ns,
'1' after 200 ns,
'0' after 240 ns,
'1' after 280 ns,
'0' after 320 ns,
'1' after 360 ns;
wait;
end process;
end Behavioral;
参考技术A 首先,你这个程序少了个END IF;
一般都是直接编译然后时序分析,怎么会没有测试程序呢?我用的是max plus ii
至于不能测试,你封装一下然后做元件使,新建个DGF的电路图不就完了么。
参考技术B modelsim里直接输入测试波形吧
testbench用在简单的程序上有点麻烦

以上是关于vhdl如何将vector赋值给logic的主要内容,如果未能解决你的问题,请参考以下文章

将变量传递给 VHDL 中的过程

c++ 如何将一个vector内容赋值给另一个vector

c++ 把string类型的h1,赋值给vector<string>类型的h2

VHDL中std_logic_vector(4095 dow nto 0)怎么赋0初值

VHDL赋初值问题

如何将二维数组赋值给vector