Verilog中如何在always block中对其他module进行调用?
我现在需要编写一个ALU,要求可以对两个4位的输入变量进行加减乘除以及逻辑运算,然后在basys2板子上实现,现在我把加减乘除和逻辑运算分为4个module已经都写好了,...
我现在需要编写一个ALU,要求可以对两个4位的输入变量进行加减乘除以及逻辑运算,然后在basys2板子上实现,现在我把加减乘除和逻辑运算分为4个module已经都写好了,然后需要在主程序中调用,因为每一种运算的切换是根据我在电路板上按下不同的按键,所以我在主程序中想要通过if...else实现,如下:
always @ (*) begin
if(s==0)
调用 adder。。。
else if(s==1)
调用subtractor。。。
else if 等等情况
这种情况应该怎么调用呢?我知道不能用module instance和module instantiation在always block中的。。。
求大神解答!
又及,模块实例化是不能用在always block中的……我现在需要解决的就是怎么能通过判断输入然后运行相应的模块 展开
always @ (*) begin
if(s==0)
调用 adder。。。
else if(s==1)
调用subtractor。。。
else if 等等情况
这种情况应该怎么调用呢?我知道不能用module instance和module instantiation在always block中的。。。
求大神解答!
又及,模块实例化是不能用在always block中的……我现在需要解决的就是怎么能通过判断输入然后运行相应的模块 展开
1个回答
展开全部
你这完全是用软件的思维来写硬件
你有了加减乘除4个模块,你现在要做的是用一个顶层模块来例化他们,同时判断输入是加减乘除中的那个,分别送到4个模块,而不是你所说的调用
另外task几乎是不用来写综合语句的,你们老师是在坑你
你有了加减乘除4个模块,你现在要做的是用一个顶层模块来例化他们,同时判断输入是加减乘除中的那个,分别送到4个模块,而不是你所说的调用
另外task几乎是不用来写综合语句的,你们老师是在坑你
更多追问追答
追问
可是模块实例化不能用在always block中啊,而if...else..语句只能用在always block中,我需要用if..else来进行输入的判断,我现在要解决的就是这个问题……
追答
你可以用一个always block来判断加减乘除,并产生一个flag去启动加减乘除运算
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询