是否可以使用实体实例化在VHDL模块中实例化verilog模块?
是否可以使用VHDL风格的实体实例化在VHDL设计中包含Verilog模块 我意识到,如果我将Verilog模块视为一个组件并实例化该组件,我就可以实现这一点是否可以使用实体实例化在VHDL模块中实例化verilog模块?,vhdl,verilog,Vhdl,Verilog,是否可以使用VHDL风格的实体实例化在VHDL设计中包含Verilog模块 我意识到,如果我将Verilog模块视为一个组件并实例化该组件,我就可以实现这一点 谢谢从我的代码集中抓取: module sync_fifo #(parameter WIDTH = 8, // width in bits L2DEPTH = 4, // Log 2 Depth, 4=16 deep REGFLAGS = 1 // Full, empty are
谢谢从我的代码集中抓取:
module sync_fifo
#(parameter WIDTH = 8, // width in bits
L2DEPTH = 4, // Log 2 Depth, 4=16 deep
REGFLAGS = 1 // Full, empty are registered
)
(
input clk, // system clock
input reset_n, // A-synchronous low reset/clear
input enable, // clock gating
input clear, // Synchronous clear
input write, // write FIFO
input [WIDTH-1:0] wdata, // write data
input read, // read FIFO
output [WIDTH-1:0] rdata, // read data
output reg empty, // FIFO is empty
output reg full, // FIFO is full
output reg [L2DEPTH:0] level // Fill level
);
outp_fifo : sync_fifo
generic map(
WIDTH => 10, -- Byte + user + last
L2DEPTH => 7, -- 128 deep
REGFLAGS=> 1
)
port map
(
clk => ACLK, -- system clock
reset_n => ARESETN, -- A-synchronous low reset/clear
enable => BIT_1 , -- clock gating
clear => BIT_0 , -- Synchronous clear
write => package_byte_en, -- write FIFO
wdata => outp_fifo_wt_data_and_meta , -- write data
read => outp_fifo_read , -- read FIFO
rdata => outp_fifo_rd_data_and_meta , -- read data
empty => outp_fifo_empty, -- FIFO is empty
full => outp_fifo_full, -- FIFO is full
level => open -- Fill level
);
后期编辑:
你只能通过一个有能力的声明来做到这一点:
COMPONENT sync_fifo IS
generic(
WIDTH : integer := 8;
L2DEPTH : integer := 8;
REGFLAGS : integer := 1
);
PORT (
clk : in STD_LOGIC; -- system clock
reset_n: in STD_LOGIC; -- A-synchronous low reset/clear
enable : in STD_LOGIC; -- clock gating
clear : in STD_LOGIC; -- Synchronous clear
write : in STD_LOGIC; -- write FIFO
wdata : in STD_LOGIC_VECTOR(WIDTH-1 downto 0); -- write data
read : in STD_LOGIC; -- read FIFO
rdata : out STD_LOGIC_VECTOR(WIDTH-1 downto 0); -- read data
empty : out STD_LOGIC; -- FIFO is empty
full : out STD_LOGIC; -- FIFO is full
level : out STD_LOGIC_VECTOR(L2DEPTH downto 0) -- Fill level
);
END COMPONENT;
虽然三年前当被问到这个问题时,答案似乎是“不”,但我在实践中发现答案是“是的,你可以”,但有一些警告。我用Mentor ModelSim和Xilinx Vivado确认了这一点 我不知道LRM是否发生了变化,或者工具供应商是否决定支持它。我使用的是VHDL-2008,所以我怀疑是后者 这是我的一个测试文件中的一个实例。VerFlopX是一个Verilog模块
VerFlopX8c: entity work.VerFlopX (rtl)
generic map (SIZE => 8) --integer:=1
port map (
Clk => Clk, --in wire
D => D16(15 downto 8) , --in wire[(SIZE-1):0]
Q => Q16(15 downto 8)); --out wire[(SIZE-1):0]
注意事项:
- 请注意,指定了体系结构“rtl”。这可以(也可能应该)省略。但它仍然可以工作,这似乎很奇怪,因为Verilog模块没有体系结构
- 不能将Q输出与open关联。ModelSim将返回一个错误。如果您更改为组件实例化,那么将正式输出连接到open就可以了
实体的组件实例化将需要事先分析(编译)模块进入VHDL资源库(IEEE Std 1076-2008 11.7组件实例化)。Verilog模块不是VHDL库单元(13.设计单元及其分析)。设计库是以前分析过的设计单元(13.2设计库,也可参见13.5分析顺序)的实现定义存储设施。请参见评论中的讨论,并给出以下答案:您应该澄清您的问题。我认为这不是他所说的“实体样式声明”的意思。对于显示的代码,仍然需要VHDL中的组件声明。他可能只是指声明outp\u fifo:entity work.sync\u fifo[…]
。你不能这么做。VHDL是一种直截了当的语言,因此它需要知道连接到什么。^这可能就是他的问题的答案。不是你在回答中写的;)啊,谢谢你的更正。因此,问题应该是:“我可以在不使用组件声明的情况下在VHDL中引用Verilog模块吗?”引用Babage的话:“我无法正确理解可能引发这样一个问题的思想混乱。”非常感谢大家。看来我的问题的答案的确是“不,你不能”。此外,我将牢记关于提出形式更好的问题的建议。