VHDL TG68核心数据输入和数据输出到数据输入输出
我想使用tg68核心,但有一个问题。当我在Altera Quartus中编译我的设计时,它会给我16个VHDL TG68核心数据输入和数据输出到数据输入输出,vhdl,Vhdl,我想使用tg68核心,但有一个问题。当我在Altera Quartus中编译我的设计时,它会给我16个data\u in和16个data\u out信号,我需要将它们连接到inout引脚中 这是我用VHDL写的一些代码,需要有人能检查我的代码,因为我认为代码没问题。这是顶层设计文件的代码,需要从tg68.vhd文件中的data\u in和data\u out信号生成inout管脚。此外,它还需要在最终设计中使用tg68.vhd的所有信号。(信号如as,uds,lds…) 代码如下: librar
data\u in
和16个data\u out
信号,我需要将它们连接到inout
引脚中
这是我用VHDL写的一些代码,需要有人能检查我的代码,因为我认为代码没问题。这是顶层设计文件的代码,需要从tg68.vhd文件中的data\u in
和data\u out
信号生成inout
管脚。此外,它还需要在最终设计中使用tg68.vhd的所有信号。(信号如as
,uds
,lds
…)
代码如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity datainout is
port(
clk : in std_logic;
reset : in std_logic;
clkena_in : in std_logic:='1';
IPL : in std_logic_vector(2 downto 0):="111";
dtack : in std_logic;
addr : out std_logic_vector(31 downto 0);
as : buffer std_logic;
uds : buffer std_logic;
lds : buffer std_logic;
rw : buffer std_logic;
drive_data : out std_logic;
datainout : inout std_logic_vector(15 downto 0)
);
end datainout;
ARCHITECTURE logic OF datainout IS
COMPONENT TG68
PORT (
clk : in std_logic;
reset : in std_logic;
clkena_in : in std_logic;
data_in : in std_logic_vector(15 downto 0);
IPL : in std_logic_vector(2 downto 0);
dtack : in std_logic;
addr : out std_logic_vector(31 downto 0);
data_out : out std_logic_vector(15 downto 0);
as : out std_logic;
uds : out std_logic;
lds : out std_logic;
rw : out std_logic;
drive_data : out std_logic
);
END COMPONENT;
signal data_in : STD_LOGIC_VECTOR (15 downto 0);
signal data_out : STD_LOGIC_VECTOR (15 downto 0);
BEGIN
data_in <= datainout;
TG68_inst: TG68
PORT MAP (
data_in => data_in,
data_out => data_out,
clk => clk,
reset => reset,
clkena_in => clkena_in,
IPL => IPL,
dtack => dtack,
addr => addr,
as => as,
rw => rw,
uds => uds,
lds => lds,
drive_data => drive_data
);
datainout(15 downto 8) <= data_out(15 downto 8) when as = '0' and rw = '0' and uds='0' else "ZZZZZZZZ";
datainout(7 downto 0) <= data_out(7 downto 0) when as = '0' and rw = '0' and lds='0' else "ZZZZZZZZ";
END;
ieee库;
使用ieee.std_logic_1164.all;
使用ieee.std_logic_unsigned.all;
实体datainout是
港口(
clk:标准逻辑中;
复位:在标准逻辑中;
clkena_in:in标准逻辑:='1';
IPL:std_逻辑_向量(2到0):=“111”;
dtack:在标准逻辑中;
地址:输出标准逻辑向量(31到0);
as:缓冲器标准逻辑;
uds:缓冲区标准逻辑;
lds:缓冲区标准逻辑;
rw:缓冲器标准逻辑;
驱动单元数据:输出标准单元逻辑;
datainout:inout标准逻辑向量(15到0)
);
结束数据输入输出;
datainout的体系结构逻辑是
组件TG68
港口(
clk:标准逻辑中;
复位:在标准逻辑中;
clkena_in:标准逻辑中;
数据输入:标准逻辑向量(15到0);
IPL:标准逻辑向量(2到0);
dtack:在标准逻辑中;
地址:输出标准逻辑向量(31到0);
数据输出:输出标准逻辑向量(15到0);
as:输出std_逻辑;
uds:输出标准逻辑;
lds:输出标准逻辑;
rw:输出标准_逻辑;
驱动器数据:输出标准逻辑
);
端部元件;
信号数据输入:标准逻辑向量(15至0);
信号数据输出:标准逻辑向量(15至0);
开始
数据中的数据,
数据输出=>数据输出,
时钟=>clk,
重置=>重置,
clkena_in=>clkena_in,
IPL=>IPL,
dtack=>dtack,
地址=>addr,
as=>as,
rw=>rw,
uds=>uds,
lds=>lds,
驱动器数据=>驱动器数据
);
数据输入输出(15到8)执行输入输出信号的基本方法是:
data_in <= data_pins;
data_pins <= data_out when enable = '1' else (others => 'Z');
您正在导入不推荐使用的std\u logic\u unsigned
库中的data\u,但在您的代码中未使用任何该库。最好将std\u logic\u unsigned
从标题中完全删除。阅读原因: