verilog变量reg和wire问题

moduleFADD(A,B,Cin,Sum,Cout);inputA,B,Cin;outputSum,Cout;...endmodulemoduleTest;...FA... module FADD(A,B,Cin,Sum,Cout);
input A,B,Cin;
output Sum,Cout;
...
endmodule

module Test;
...
FADD M(C1,C2,C3,C4,C5);
...
endmodule

答案是Cin(wire) Cout(wire/reg) C3(wire/reg) C5(wire)
能举个例子说明下么,百度知道那个说得不清楚c3是对应Cin的,怎么一个只能wire另一个两个都可以
展开
 我来答
匿名用户
推荐于2018-05-15
展开全部
verilog里一般不声明输出类型的话 默认是wire型的
如果你想在输出处寄存一下:比如使用always语句,则必须声明为reg类型
wire是线网,就是相当于实际中的连接线,你想assign的话就是直接连接,就是用wire型,他的值是随时变化的。比如你想寄存一下,让他在时钟边沿才变化就需要reg类型了

你的问题应该是主要讨论下wire型和reg型的应用区别吧
另外,团IDC网上有许多产品团购,便宜有口碑
superwing001
2011-05-12 · 超过10用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:26.9万
展开全部
c3是reg型,你这个主函数是个testbench,子函数a,b,cin在testbench里面对应的测试信号是reg型,输出sum,cout是wire型,你的答案是错的,REG C1,C2,C3 ; WIRE C4,C5;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
褐雨黑桐
2011-05-05 · TA获得超过455个赞
知道小有建树答主
回答量:251
采纳率:100%
帮助的人:245万
展开全部
你只要记住always里赋值用reg,assign里面赋值用wire
追问
已经记住了,这道题还是没有解决
追答
你这个,Cin在FADD里算输入,不用写类型,但如果在Test里对C3赋值,那么就按上面说的来定类型,你这里C3和Cin是对应的,Cout是FADDD的输出,在FADD里按上面说的赋类型,在Test里面对应为C5,是wire类型,表示线连。
调用元件的输出都是wire,输入如果是整个系统的输入,就不用写类型,如果是自己编写的信号,根据上面always或assign来定类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
长安小豆
2019-06-28 · TA获得超过230个赞
知道小有建树答主
回答量:292
采纳率:100%
帮助的人:125万
展开全部
输入端口可以由wire/reg驱动,但输入端口只能是wire;输出端口可以使wire/reg类型,输出端口只能驱动wire。
1.A,B,Cin是输入,只能是wire型的。
2.Sum、Cout是输出。如果这个加法器,里面用门电路搭建,用assign直接写逻辑函数,那么输出就是wire型的。如果这是个用always@(A or B orCin)写的,其实就是只有输入变化输出才重新计算,那么就是说输入都不变化的时候是要保持之前的值的,所以需要用reg型。
3. 输入端口A,B,Cin只能是wire型,但是在电路中他们是被前端其他信号C1,C2,C3驱动的。那么是可以由wire或者reg信号驱动的。举个例子,如果Cin前面连接个开关(C3),就是wire型的,如果他连接的是一个寄存器的输出(例如加法器输出为reg时的级联),那就是reg型的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式