hdlbits系列verilog解答(always块)-29

文章目录

    • 一、问题描述
    • 二、verilog源码
    • 三、仿真结果


一、问题描述

由于数字电路由用网线连接的逻辑门组成,因此任何电路都可以表示为模块和赋值语句的某种组合。然而,有时这不是描述电路的最方便方式。过程procedure(其中 always 的块就是一个示例)提供了描述电路的替代语法。

对于可综合的硬件,有两种类型的 always 模块是相关的:
Combinational: always @(*) --组合逻辑
Clocked: always @(posedge clk) --时序逻辑

组合逻辑的always模块等同于assign连续赋值语句,因此两种方法都可以表达组合逻辑电路。选择使用哪种语法主要是哪种语法更方便的问题。过程块内的代码语法与过程块外部的代码不同。procedure过程块具有更丰富的语句集(例如,if-then,case),不能包含连续赋值 * ,但也引入了许多新的非直观的错误方式。 * ( 程序连续赋值确实存在,但与连续赋值略有不同,并且不可综合。

例如,assign 和 combinational always 模块描述相同的电路。两者都创建相同的组合逻辑电路。每当任何输入(右侧)更改值时,两者都将重新计算输出。

assign out1 = a & b | c ^ d;
always @(*) out2 =

你可能感兴趣的:(verilog语言,fpga开发)