微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog 请问如何描述组合电路mux? 试了输出必须定义成reg才行

verilog 请问如何描述组合电路mux? 试了输出必须定义成reg才行

时间:10-02 整理:3721RD 点击:

请问组合电路 MUX多路器如何描述?以下描述需要把输出(OUT)定义为reg,否则编译错,试过夏宇闻书上例子输出也必须定义成reg,

如果定义成reg,则就不是组合电路mux了。

请问如何定义组合电路mux?



module mux(EN ,IN0 ,IN1 ,IN2 ,IN3 ,SEL ,OUT );

input
EN ;

input
[7:0] IN0 ,IN1 ,IN2 ,IN3 ;

input
[1:0] SEL ;

output [7:0] OUT ;

reg
[7:0] OUT ;

always @(SEL
or EN
or IN0
or IN1
or IN2
or IN3 )

begin

if (EN
== 0) OUT
= {8{1'b0}};

else

case (SEL )

0 : OUT
= IN0 ;

1 : OUT
= IN1 ;

2 : OUT
= IN2 ;

3 : OUT
= IN3 ;

default : OUT
= {8{1'b0}};

endcase

end

endmodule

reg  和是否组合电路没有关系。
关键看always @里面是否有posedge/negedge, 没有的,就只是电平变化,出来的还是组合电路。例子里的那个就是个MUX

assign Y=S0?B:A;

语法书上已经有说过,信号类型,wire只综合成线型;reg则要根据输入与输出关系才确认是综合成寄存器还是线型,所以你的问题出在对语法上不是很精通。你的贴是对的。

mux本身没有时钟,就是一个纯粹的组合逻辑器件;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top