Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VHDL TG68核心数据输入和数据输出到数据输入输出_Vhdl - Fatal编程技术网

VHDL TG68核心数据输入和数据输出到数据输入输出

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

我想使用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
…)

代码如下:

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
从标题中完全删除。阅读原因: