微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教两组代码的区别,哪组的风格好?

请教两组代码的区别,哪组的风格好?

时间:10-02 整理:3721RD 点击:
请教阻塞赋值和非阻塞赋值的硬件实现,哪组代码的风格好?

代码1
always @ (posedge i_clk or negedge i_rst_n)
if (~i_rst_n)
        o_drr_wr                <=  #1   1'b1             ;
else
case (i_im)
    3'b000:   
        o_drr_wr                <=  #1   i_drr_wr_spi     ;
    3'b001:
        o_drr_wr                <=  #1   i_drr_wr_pi      ;
    default:
        o_drr_wr                <=  #1   1'b1             ;
endcase
代码2
always @ (*)
case (i_im)
    3'b000: //spi output  
        o_drr_wr                =   i_drr_wr_spi     ;
    3'b001: //pi output
        o_drr_wr                =   i_drr_wr_pi      ;
    default:
        o_drr_wr                =   1'b1             ;
endcase

Thanks very much

一个是时序逻辑,一个是组合逻辑,有什么比较性啊



   可以考虑电气特性啦,硬件实现啦

看你具体的电路实现了,一个时序逻辑,一个组合逻辑

没法比较,根据具体应用场合来定。


这两种代码设计的变量   o_drr_wr  都设定为reg类型
时序逻辑, 我可以理解o_drr_wr
为一个寄存器,在时钟的上升沿取值
但是组合逻辑,怎么理解,o_drr_wr还是一个寄存器么?



   
上面这两种代码涉及的变量
o_drr_wr  都设定为reg类型
时序逻辑, 我可以理解o_drr_wr
为一个寄存器,在时钟的上升沿取值
但是组合逻辑,怎么理解,o_drr_wr还是一个寄存器么?



   
这两种代码涉及的变量
o_drr_wr  都设定为reg类型
时序逻辑, 我可以理解o_drr_wr
为一个寄存器,在时钟的上升沿取值
但是组合逻辑,怎么理解,o_drr_wr在电路中还是一个寄存器么?

你不是上面有always @*吗?
任何输入一变,输出立刻就会作出反应,这不就是组合逻辑吗?
和你verilog语言用的reg还是wire没有关系。
reg和wire都可以描述组合电路,只是方法不同。
case语句的default放x比较好,有利于x的传播,有利于bug发现,有利于前后仿一致。

这不是风格问题,这是功能问题,一个时序电路,一个组合电路,designer 要清楚他想做出来的是什么。

10L说的对。两段代码都不好,因为都是X-Termination

都听好的,初学者,呵呵

葡萄和西瓜哪个更好吃?



   西瓜

always里面的用非阻塞赋值就是时序逻辑,反之时组合逻辑,看应用

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top