1.3.3.Verilog组合逻辑实现方式
验证实验给出两种不同的组合逻辑实现方式:
assign方式
always方式
二者区别对比如下:
assign方式
always方式
result
wire
reg
num2
wire
reg
sign_extend
wire
reg
always方式既可以实现组合逻辑,也可实现时序逻辑:
always @(a or b or c)或always@(*)形式的,即不带时钟边沿的,综合出来还是组合逻辑;
always @(posedge clk)形式的,即带有边沿的,综合出来一般是时序逻辑,会包含触发器(Flip-Flop)
观察always方式的触发信号op,可以得知其为组合逻辑。在这里,给出两种方式在FPGA资源及编程难度上的对比。
assign方式
always方式
资源占用
使用wire变量,综合得到的组合逻辑全部由导线构成,不占用FPGA资源
由于内部赋值与输出都需要使用reg变量,同为组合逻辑,需占用一定资源
编程难度
面向信号进行状态描述,一般需要考虑单个信号在所有状态下的可能性,需要完全理解后进行编程。
面向实验需求描述,always模块内书写方式与高级语言相仿,可以按照实验要求逐一列举。
理解难度
阅读者理解难度大。
阅读者理解较容易。
注意:Imagination及龙芯高校开源计划代码均采取assign方式,实验推荐使用assign方式实现组合逻辑。设计实验中新增内容使用assign方式增加输出信号更为简单。
Last updated
Was this helpful?