verilog中有a和b,双方都会因为对方的改变而改变,一个是wire,一个是reg,如何实现?

如题所述

你这个问题中必有回路,数字系统中的回路必然要有时钟驱动,也就是你所说的reg做阻隔,实在不知道你的
因为对方的改变而改变
这句话的意思。不过就这样一段代码是可以实现你的要求的
wire a;
reg b;

assign a <= b+c;

always @(posedge clk) begin
b <= a + 1'b1;
end追问

字数超过限制,我用图片代替下:

追答

两个always中对一个flag赋值是不允许的啊!!!
要么你就写成
always @(posedge clk or reset) begin //如果你死活不想用时序电路就用 always @*
if (reset) begin

flag <= 1'b0;

end

else begin

flag <= wire_for_flag;

end
end

追问

好像是可以的?

always #50 clk=~clk;


always@(clk)

begin

   a=a+1;

end


always@(b)

begin

   a=a+3;

end


initial begin

  #70  b=3;

end


endmodule


如果把initial中的70也改成50

温馨提示:内容为网友见解,仅供参考
无其他回答

verilog中有a和b,双方都会因为对方的改变而改变,一个是wire,一个是reg...
你这个问题中必有回路,数字系统中的回路必然要有时钟驱动,也就是你所说的reg做阻隔,实在不知道你的 因为对方的改变而改变 这句话的意思。不过就这样一段代码是可以实现你的要求的 wire a;reg b;assign a <= b+c;always @(posedge clk) begin b <= a + 1'b1;end ...

Verilog 中定义信号为什么要区分 wire 和 reg 两种类型
而 wire 只需要输入就足够了。这样区分两种类型也是为了更好地模拟真实硬件中时序逻辑和组合逻辑的行为。仿真器对 wire 类型会在每个 delta time 都进行计算并赋值,而 reg 类型只有在满足敏感列表条件时才会计算。而如今随着 SV 的推出 Verilog 都已经到 2005 了,但当初的这一习惯继承了下来。虽然 r...

Verilog中的Reg和Wire
在Verilog编程中,reg和wire这两个概念常常引起初学者的疑惑。简单来说,reg和wire的主要区别在于它们在always块中的使用以及编译后的电路实现。官方定义中,reg可以理解为存储单元,它具有记忆功能,能保持上次的输入值,无需持续激励。相比之下,wire更像是物理连线,它需要通过assign指令来赋值,不能在al...

verilog HDL中wire和reg的区别
输入端口可以由wire\/reg驱动,但输入端口只能是wire;输出端口可以是wire\/reg类型,输出端口只能驱动wire;若输出端口在过程块中赋值则为reg型,若在过程块外赋值则为net型(wire\/tri)。用关键词inout声明一个双向端口, inout端口不能声明为reg类型,只能是wire类型。默认信号是wire类型,reg类型要申明。

verilog变量reg和wire问题
verilog里一般不声明输出类型的话 默认是wire型的 如果你想在输出处寄存一下:比如使用always语句,则必须声明为reg类型 wire是线网,就是相当于实际中的连接线,你想assign的话就是直接连接,就是用wire型,他的值是随时变化的。比如你想寄存一下,让他在时钟边沿才变化就需要reg类型了 你的问题...

verilog中reg和wire类型的区别和用法
reg对应于过程赋值,如always,initial 从综合的角度来说,HDL语言面对的是综合器(如DC等),要从电路的角度来考虑。这时:1、wire型的变量综合出来一般是一根导线;2、reg变量在always块中有两种情况:(1)、always后的敏感表中是(a or b or c)形式的,也就是不带时钟边沿的,综合出来还是组合...

Verilog语法简介(4)
Verilog语言中,模块的结构是设计的基础,它由module关键字开始,包括模块名、端口列表以及内部的声明和语句。模块定义了如何与其他模块通信,通过端口队列,如输入输出、wire\/reg类型和位宽定义,明确模块间的接口。模块的端口分为输入、输出和双向,其中,wire类型是默认的。在实际设计中,推荐明确声明所有...

请Verilog高手帮助!wire赋值问题
在实例化中,所有的端口都要求用wire型,跟module中的定义没关系。比如你这里的test模块,虽然模块中b定义的是reg型,但是实例化的时候,仍然要使用wire型,这是规定,不能改变。其实,一个module,就类似于一个小电路模块,在module中定义的,是内部的电路,你定义成reg或者wire都可以,视情况而定;而...

verilog中reg和wire的区别
首先要先清楚一点,verilog是硬件描述语言,其最终是为了生成一个电路,所以它的变量类型是根据实际电路来决定的。从名字理解:wire,线型,实际上在电路中的作用就是一根连线;reg,寄存器型,在电路中就作为寄存器存在。连线和寄存器是构成数字电路的基本结构,这也是verilog这两种变量类型的来源。当然,在...

为什么在verilog中要定义wire?
两者差别很大,完全不能取消。在Verilog中,wire永远是wire,就是相当于一条连线,用来连接电路,不能存储数据,无驱动能力,是组合逻辑,只能在assign左侧赋值,不能在always @ 中赋值;但reg可以综合成register,latch,甚至wire(当其只是中间变量的时候),可以用于组合逻辑或者时序逻辑,能存储数据,有驱动...

相似回答