VHDL:如何为输入赋值?
我为多路复用器编写了一个模板 我的目标是当s=01或s=11时y=1 现在,我应该如何链接d0和它所持有的值 在本例中,d0应保持0,d1=1,d2=0,d3=1VHDL:如何为输入赋值?,vhdl,intel-fpga,quartus,Vhdl,Intel Fpga,Quartus,我为多路复用器编写了一个模板 我的目标是当s=01或s=11时y=1 现在,我应该如何链接d0和它所持有的值 在本例中,d0应保持0,d1=1,d2=0,d3=1 library IEEE; use IEEE.std_logic_1164.all; entity mux4v1 is port( d0 : in std_logic; -- 0 d1 : in std_logic; -- 1 d2 : in std_
library IEEE;
use IEEE.std_logic_1164.all;
entity mux4v1 is
port(
d0 : in std_logic; -- 0
d1 : in std_logic; -- 1
d2 : in std_logic; -- 0
d3 : in std_logic; -- 1
s : in std_logic_vector(1 downto 0); -- my inputs controller via switches
y : out std_logic
);
end mux4v1;
architecture struct of mux4v1 is
begin
with s select
y <= d0 when "00",
d1 when "01",
d2 when "10",
d3 when "11";
end struct;
我认为您要问的是如何将“0”和“1”输入到输入中 答案是:从外部,在使用多路复用器的设计中 对于模拟,可以创建更高级别的设计并在其中实例化mux。更高层次的设计可能类似于微处理器,但这里我们只想测试mux,所以我们可以为它编写一个简单的测试平台 测试台通常没有输入或输出,因此它构成了设计的顶层,您可以在模拟器中运行它
entity mux_tb is
end mux_tb;
在内部,它包含被测DUT设备和您测试它的任何其他组件、互连它们的信号、生成时钟和其他信号的过程,以及将设备输出与预期值进行比较并报告任何错误的过程
architecture simple of mux_tb is
entity mux4v1 is
signal test_d0 : std_logic := 0;
signal test_d1 : std_logic := 1;
signal test_d2 : std_logic := 0;
signal test_d3 : std_logic := 0;
signal sel : std_logic_vector(1 downto 0);
signal output : std_logic;
begin
DUT : entity work.mux4v1
port map(
d0 => test_d0,
d1 => test_d1,
d2 => test_d2,
d3 => test_d3
s => sel,
y => output
);
Stimulus : process
begin
sel <= "00";
wait for 1 us;
sel <= "01";
-- and so on
end process;
end simple;
对于合成,如果您只是想在FPGA中实现MUX,可以按原样进行合成。然后还有一个额外的步骤,您可以放置和路由它来生成一个位文件来编程FPGA
该步骤是为每个输入和输出信号分配设备管脚
这些管脚分配在您编写的约束文件中进行,具体取决于FPGA的布线方式。例如,如果有一个您想要连接到D0的开关和一个您想要连接到Y的LED,请从电路板的示意图中找出该开关连接到哪个FPGA引脚,并编写一个将该引脚连接到输入D0的约束条件。此约束文件的语法和一些示例应该在您的FPGA工具文档中