verilog中wire一般什么时候应用?

我想了解一下,wire型一般什么时候应用。我看有的程序这样写。比如:output[2:0]a;rega;有的没有rega这一语句。如果没有的话,那么此时输出的a默认什么类... 我想了解一下,wire型一般什么时候应用。我看有的程序这样写。比如:
output[2:0] a;
reg a;
有的没有reg a这一语句。如果没有的话,那么此时输出的a默认什么类型呢?是wire吗?
还有一种情况也是输入和输出,比如这两种语句
① wire[7:0] out
② output[7:0] out
区别在哪里?
展开
 我来答
angela_angela
2011-10-12 · TA获得超过495个赞
知道小有建树答主
回答量:130
采纳率:100%
帮助的人:183万
展开全部
有几种情况变量需要定义成wire。
第一。assign 语句
例如:
reg a,b;
wire and_result;
...
assign and_result =a&&b;
你可以试试把wire定义成reg。综合器会报错。

第二。元件例化时候的输出必须用wire
例如:
wire dout;

ram u_ram
(
...
.out(dout)
...
);

据你上面所说,wire就是连线的意思,一般在assign语句,或是模块例化,就是上面两种情况下使用。

如果只写output[7:0] out,就是wire型,默认是wire型。

至于你所说“如果再特别补充一句reg out的话,就是reg型了?”
答案是不一定的,主要是看你是否想寄存一级,若用于组合逻辑的always块中,一般综合成wire型,如果是时序电路,则是reg型的寄存器。

一般reg,用于always块中,而wire用于上述两种情况,记住就ok了
光环国际
2015-08-25 · IT·互联网经理人培训口碑品牌
光环国际
光环国际成立于2001年7月,是一家专注于IT互联网经理人培训机构,经过18年发展,光环卓而不凡的服务品质,现已成为IT互联网经理人培训国内口碑品牌。
向TA提问
展开全部
有几种情况变量需要定义成wire:

第一:assign 语句

例如:
reg a,b;

wire and_result;

...

assign and_result =a&&b;

你可以试试把wire定义成reg。综合器会报错。

第二:元件例化时候的输出必须用wire

例如:
wire dout;

ram u_ram

(

....out(dout)

...

);

wire按照国外教材上面的定义:

wire为无逻辑连线。只做连线,wire本身是不带逻辑性的,所以输入什么输出就是什么。所以你尝试着用always语句对wire变量赋值。综合器就会报错。

那么你可能会问。assign c
=a&&b不是就是对wire的赋值吗?其实并非如此。综合器综合时将a&&b综合成ab经过一个与门。而c只是连接到与门输出的线。正真综合出与门的是&&。而不是c。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pc_repair
2011-10-11 · TA获得超过1716个赞
知道小有建树答主
回答量:1150
采纳率:66%
帮助的人:475万
展开全部
wire就是导线啊. verilog中有显性定义和隐性定义的区别. 好比protel里画电路, 有些导线上你标了D0, D1, ... 有些导线你没标, 自动赋了N03781096, 不声明不等于它不需要或不存在, 事实上大量存在. 在verilog里面, 你可以用wire 声明特定的导线名称, 多用于testbench互联(即无寄存的直连). 我以前用它(alias)做倒序转化后赋值给一组reg, 可以精简代码.
追问
是不是这个意思:如果只写output[7:0] out,就是wire型,只不过没有声明。如果再特别补充一句reg out的话,就是reg型了?也就是wire[7:0] out和output[7:0] out是一样的。
追答
对头. 在综合过程中,会综合出很多的无名wire, 对内、对外需引用的wire就得声明一下便于引用. 片段:
reg wr_stb_n;
wire tx_ing;
reg [7:0] rSTATUS_bak;
wire wr_trig_n;
reg state_chged;

assign wr_trig_n = click_n && urgent_in_n && ~state_chged;
always @(posedge clkuart)
wr_stb_n <= wr_trig_n;

txmit tUART(
.reset(~rst_n),
.clock(clkuart),
.data_in(rSTATUS),
.write_strobe(wr_stb_n),
.s_out(rx0_n),
.transmiting(tx_ing)
);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王者若成风5130
2011-10-13 · TA获得超过5.6万个赞
知道大有可为答主
回答量:3万
采纳率:0%
帮助的人:3913万
展开全部
输出变量如果没有特别声明,默认是wire型;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户65143
2011-10-11
知道答主
回答量:8
采纳率:0%
帮助的人:4万
展开全部
要在always模块里赋值,必须是寄存器变量。要用assign赋值,必须是wire型。output自动就是wire型。不知道说清楚了么
追问
是不是这个意思:如果只写output[7:0] out,就是wire型,只不过没有声明。如果再特别补充一句reg out的话,就是reg型了?也就是wire[7:0] out和output[7:0] out是一样的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式