Verilog 与 C 区别和联系,个人理解

1,Verilog 里面变量不叫变量,叫信号。 信号分两类: line 和 buffer。 对应组合逻辑和时序逻辑。要想保存状态,就得用时序逻辑。

2,Verilog里面所有变量跟时钟对齐。所以Verilog代码本质是并行运行的。 各信号之间只跟时钟对齐。 

3,C语言是串行运行的,变量之间的逻辑关系可以通过指令顺序实现依赖。因此,只要跟算法逻辑对应就行了, 不用做专门的变量依赖和逻辑关系管理。例如:当后一条语句需要读一个变量的数据时,可以将待读取变量的状态改变语句放在状态读取语句前面。
     
4,Verilog变量状态只跟时钟对齐,所以不能通过指令顺序的方式实现状态依赖。因此,必须实现变量状态管理,这是在逻辑和代码上Verilog和C最大的区别,每个数据变量都得有对应的状态变量。代码逻辑主要体现在状态变量的管理上。 

5,状态管理可以通过: 计数器和状态机来实现。 计数器实际上就对应C语言里面的for。状态机需要有状态改变触发条件,如果没有芯片外信号触发,基本上都时靠定时器触发状态改变。此时,状态机里的一个状态,可以认为对应C语言里的一个for语句块。 

5,Verilog的另外一个难点是代码风格,Verilog主张每个信号一个always语句块,因为代码是并行的。所以在写代码时,并不能把相关联的逻辑代码放在一个always块中管理,一个算法要分布在很多个always块中,也即所谓的电路逻辑。并且,由于算法逻辑的关系,always语句块之间也不是绝对独立的,需要通过if来判断相关联信号状态来实现状态改变。这就给Verilog代码的阅读带来很大困难。

6,看透上述本质,其实Verilog程序的设计和代码阅读其实并不是很难。 只是需要先严格执行先设计、后编码的流程。不能像C语言那样可以写着看。想要实现Python里用Jupyter工具的状态更是不可能。所以写Verilog的人一定有很强的全局观。 这也是Verilog最优魅力的地方。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值