所以,我设计了一个2位全加器,由全加器和半加器组成。我刚开始使用Vivado的I / O规划工具来进行端口分配,但我遇到了一个问题。我的一个输入,第一位的初始carry_in,我想设置为ground,因为它应该始终为0.我知道我可以在我的VHDL代码中强制它为0,但我被告知这不是真正的正确方法去做吧。我试图将该端口设置为i / o规划器中的一个接地引脚,但Vivado只是告诉我我不能将一个端子放在空引脚位置。有谁知道怎么做?
作为一个临时解决方案,我只是将carry_in端口分配给一个按钮输入,我将保留未按下状态,因此它总是为0.当它被编程到电路板上时,一切正常。
*使用Vivado 2015.2并在ZYBO开发板上工作。
这是顶级2位全加器代码:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity full_adder_2bit is
port(
a : in STD_LOGIC_VECTOR (1 downto 0);
b : in STD_LOGIC_VECTOR (1 downto 0);
carry_in : in STD_LOGIC;
sum : out STD_LOGIC_VECTOR (1 downto 0);
carry_out : out STD_LOGIC
);
end full_adder_2bit;
architecture structural of full_adder_2bit is
component full_adder is
port(
a : in STD_LOGIC;
b : in STD_LOGIC;
carry_in : in STD_LOGIC;
sum : out STD_LOGIC;
carry_out : out STD_LOGIC
);
end component;
signal cin_fa1 : std_logic;
begin
fa0: full_adder port map (a => a(0), b => b(0), carry_in => carry_in, sum => sum(0), carry_out => cin_fa1);
fa1: full_adder port map (a => a(1), b => b(1), carry_in => cin_fa1, sum => sum(1), carry_out => carry_out);
end structural;
这就是我从I / O规划者那里得到的限制。一切正常,我只想将carry_in设置为地面而不是未使用的按钮。
set_property IOSTANDARD LVCMOS33 [get_ports {a[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {a[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {b[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {b[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sum[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sum[0]}]
set_property PACKAGE_PIN T16 [get_ports {a[1]}]
set_property PACKAGE_PIN P15 [get_ports {a[0]}]
set_property PACKAGE_PIN W13 [get_ports {b[1]}]
set_property PACKAGE_PIN G15 [get_ports {b[0]}]
set_property PACKAGE_PIN M15 [get_ports {sum[1]}]
set_property PACKAGE_PIN M14 [get_ports {sum[0]}]
set_property PACKAGE_PIN D18 [get_ports carry_out]
set_property IOSTANDARD LVCMOS33 [get_ports carry_out]
set_property PACKAGE_PIN Y16 [get_ports carry_in]
set_property IOSTANDARD LVCMOS33 [get_ports carry_in]
答案 0 :(得分:2)
您可以将其分配给未使用的未连接引脚,并激活其上的内部下拉。
但是,最好将它绑定到VHDL文件中的'0'
。评论“这不是正确的方式”,这有点值得商榷。完整的加法器实体应该具有carry_in输入。但是,FPGA顶层应该只有它所需的引脚。
更好的方法是拥有一个文件(比方说,toplevel.vhd)实例化一个full_adder_2bit将进位绑定到'0'
。这样,full_adder_2bit保持有用的carry_in位,你的顶层摆脱了不必要的引脚。