VHDL一个实体对应多个结构体
首先,VHDL不是软件程序,不存在顺序执行的问题。如果你用多个结构体来描述不同的实现方案的话,那么,如果不特别声明的话,则VHDL会对最后描述的那个结构体进行综合。如果你想要对其他结构体进行综合的话,则要写一个配置声明。
配置是VHDL五大模块(实体、结构体、设计库、程序包、配置)之一,关于配置的详细情况,请参考有关VHDL的书籍。
4选1多路选择器
ENTITY mux4 IS
PORT(in0,in1,in2,in3:IN Bit;
sel:IN Bit_Vector(0 TO 1);
q:OUT Bit);
END mux4;
ARCHITECTURE behav1 OF mux4 IS
BEGIN
mux4_p1:PROCESS(in0,in1,in2,in3,sel)
BEGIN
IF sel = ″00″ THEN q <= in0;
ELSIF sel = ″01″ THEN q <= in1;
ELSIF sel = ″10″ THEN q <= in2;
ELSE q <= in3;
END IF;
END PROCESS mux4_p1;
END behav1;
ARCHITECTURE behav2 OF mux4 IS
BEGIN
q <= in0 WHEN sel = ″00″ ELSE
in1 WHEN sel = ″01″ ELSE
in2 WHEN sel = ″10″ ELSE
in3; -- 这个条件信号赋值语句与进程mux4_p1等价
END behav2;
ARCHITECTURE behav3 OF mux4 IS
BEGIN
mux4_p2:PROCESS(in0,in1,in2,in3,sel)
BEGIN
CASE sel IS
WHEN ″00″ => q <= in0;
WHEN″01″ => q <= in1;
WHEN ″10″ => q <= in2;
WHEN OTHERS => q <= in3;
END CASE;
END PROCESS mux4_p2;
END behav3;
ARCHITECTURE behav4 OF mux4 IS
BEGIN
WITH sel SELECT
q <= in0 WHEN ″00″,
in1 WHEN ″01″,
in2 WHEN ″10″,
in3 WHEN OTHERS; -- 这个选择信号赋值语句与进程mux4_p2等价
END behav4;