我应该在VHDL中创建一个具有可变数量的输入和输出的实体.这个引脚数应该从GENERIC结构中给出.我们假设有这样的代码:
entity HELLO is
GENERIC(NUM_INPUT: integer:=4;
NUM_OUTPUT: integer:=2
);
port(
input1 : in std_logic_vector(31 downto 0);
input2 : in std_logic_vector(31 downto 0);
input3 : in std_logic_vector(31 downto 0);
input4 : in std_logic_vector(31 downto 0);
out1 : out std_logic_vector(31 downto 0);
out2 : out std_logic_vector(31 downto 0)
);
end entity HELLO;
Run Code Online (Sandbox Code Playgroud)
显然,手动编写它们(如上例所示)会使GENERIC构造无效.
我希望这4个输入和2个输出根据GENERIC信息自动生成.怎么做?
有谁知道这些方法之间的差异acquire ()和release ()(java.util.concurrent.Semaphore)和await ()和signal (new ReentrantLock().newCondition() ).
你能为这些方法公开一个伪代码吗?
假设有许多线程调用该方法m(int i)并将数组的值更改为位置i.以下代码是否正确,或者是否存在竞争条件?
public class A{
private int []a =new int[N];
private Semaphore[] s=new Semaphore[N];
public A(){
for(int i =0 ; i<N ; i++)
s[i]=new Semaphore(1);
}
public void m(int i){
s[i].acquire();
a[i]++;
s[i].release();
}
}
Run Code Online (Sandbox Code Playgroud)