发布
社区首页 >问答首页 >关于有线上的多个驱动程序的问题,错误:[DRC MDRV-1]多个驱动程序网: Net led_OBUF[0]有多个驱动程序: led_OBUF[0]_inst_i_1/O

关于有线上的多个驱动程序的问题,错误:[DRC MDRV-1]多个驱动程序网: Net led_OBUF[0]有多个驱动程序: led_OBUF[0]_inst_i_1/O
EN

Stack Overflow用户
提问于 2020-12-31 19:23:33
回答 1查看 2.3K关注 0票数 0

我正在创建一个简单的VHDL代码,它应该使用8个输入(每个输入4个)来创建两个4位二进制数(A和B),然后根据按下的三个按钮中的一个,在A和B上执行一个逻辑函数,或者是AND,OR,或者XOR。

我担心的是,我试图将多个输入信号映射到单个端口,将多个输出信号映射到单个端口,但我的困惑在于,我成功地实现了一个非常类似的描述,没有任何错误,我将在最后显示无错误描述。如果我的怀疑是正确的,请有人向我解释为什么错误不会发生在下面的代码?

有错误的代码:

代码语言:javascript
代码运行次数:0
复制
use IEEE.STD_LOGIC_1164.ALL;

entity Lab_2_Source_File is
port(A : in STD_LOGIC_VECTOR(3 downto 0);
     B : in STD_LOGIC_VECTOR(3 downto 0);
     btnd : in STD_LOGIC;
     btnl : in STD_LOGIC;
     btnr : in STD_LOGIC;
     led : out STD_LOGIC_VECTOR(3 downto 0)
     );
end Lab_2_Source_File;


architecture Behavioral of Lab_2_Source_File is
begin 

process(btnd)
begin
led(0) <=A(0) and B(0);
led(1) <=A(1) and B(1);
led(2) <=A(2) and B(2);
led(3) <=A(3) and B(3);
end process;

process(btnl)
begin
led(0) <=A(0) or B(0);
led(1) <=A(1) or B(1);
led(2) <=A(2) or B(2);
led(3) <=A(3) or B(3);
end process;

process(btnr)
begin
led(0) <=A(0) xor B(0);
led(1) <=A(1) xor B(1);
led(2) <=A(2) xor B(2);
led(3) <=A(3) xor B(3);
end process;

end Behavioral;

我相应地修改了约束文件

代码语言:javascript
代码运行次数:0
复制
set_property -dict { PACKAGE_PIN T14   IOSTANDARD LVCMOS25 } [get_ports { led }]; #IO_L15P_T2_DQS_13 Sch=led[0]

## Switches

set_property -dict { PACKAGE_PIN E22  IOSTANDARD LVCMOS12 } [get_ports { A }]; #IO_L22P_T3_16 Sch=sw[0]

set_property -dict { PACKAGE_PIN F21  IOSTANDARD LVCMOS12 } [get_ports { B }]; #IO_25_16 Sch=sw[1]

这是错误

DRC MDRV-1多驱动网: Net led_OBUF有多个驱动程序:led_OBUF_inst_I_1/O,led_OBUF_inst_i_3/O和led_OBUF_inst_i_2/O。

第二个代码,没有错误。我展示了这段代码,因为我不确定如何将4个输入(3 downto 0)映射到单个输入。我已经使用约束文件中的原始端口名命名了这些端口。

代码语言:javascript
代码运行次数:0
复制
port(sw0 : in STD_LOGIC_VECTOR(3 downto 0);
led0: out STD_LOGIC_VECTOR(3 downto 0)
);

end Lab_2_Source_File;

architecture Behavioral of Lab_2_Source_File is
begin 

process(sw0) 
begin 

led0<=sw0;

end process; 
end Behavioral;

如前所述,这个错误使我想到,这是由于试图将多个信号映射到led输出,然而,尽管这是合理的,但我感到困惑,因为当我将多个信号映射到其他代码的输出时,不会发生相同的错误。有人能帮我解释一下发生了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-01 19:54:26

错误使我想到,这是由于试图将多个信号映射到led输出

这是正确的。

然而,尽管这是有意义的,但我感到困惑,因为当我将多个信号映射到其他代码的输出时,不会出现相同的错误。

在最后一个例子中,

代码语言:javascript
代码运行次数:0
复制
led0<=sw0;

led0(0)的唯一驱动程序是sw0(0)led0(1)的唯一驱动程序是sw0(1),依此类推。因此,一个网没有多个驱动程序,正如第一个例子所示,这就是没有错误的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65524860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档