33 .使用wire型内核reg型连续赋值语句和运算符
要在编程中正确使用wre和reg类型,请执行以下操作:
)1)在连续赋值语句(assign )中,由于是组合电路的描述,因此被赋值的信号只能使用wire类型
)2)在Initia和always程序语句中,代入的信号必须定义为reg型
)3)采用结构级描述时,模块、基本门和开关部件的输出信号只能使用wire类型。
在硬件描述语言中,大多数电路都采用WIRE类型
无论是描述组合电路还是时序电路,用过程语句描述时都必须重新定义为REG类型
在标准栅极电平的单元电路中,其输入输出信号非常明确,其最初的信号是输出信号,之后是输入信号
连续赋值语句是非常高效地描述组合电路的方法,运算符用硬件描述语言来表现就是电路
递归运算符
关于组合电路,可以通过使用连续赋值语句和运算符来充分设计。 但是在一些特殊环境中,采用过程语句更有效率。 一个典型的例子是对真值表和有限状态机的case条件分支语句的描述,采用case语句是合理的
连接操作员:
34.always语句中敏感事件表时序电路下使用Verilog HDL程序的并行化设计思想无阻塞赋值语句和流水线设计
(1)用过程语句描述组合电路时,必须将所有输入信号列入敏感信号列表,且敏感信号列表中不得存在边缘信号。
(2)使用过程语句描述时序电路时,需要将时间信号和部分输入信号放入敏感信号列表中。
在用定时电路描述过程中,在一些工具中,只有边缘信号显示在敏感事件表中,而边缘信号和电平信号都不显示在敏感事件表中
许多集成工具(如Quartus )无法同时在敏感事件表中显示边缘变化信号和电平变化信号。 例如
always@(posedgeclk,negedge rst )是正确的和集成的。
always@(posedge clk,rst )是错误的,不能合并。
采用不同的敏感事件表和电路描述方式往往会得到不同类型的电路
硬件描述语言是一种典型的并行化编程方式
在Verilog HDL语言中,电路结构描述方式、数据流描述方式和操作级描述方式是完全并行的,直接体现在编程代码中。
在同一模块中,所有结构化建模也是并行的
串行是只出现在beginend中的闭塞性赋值
在数字电路中,工作频率由延迟决定,但为了提高电路的工作频率,减少路径延迟
35 .时间优先的概念逻辑重叠和资源享受
if和case语句的优先级
在串行语句中,优先级最高的是最后一句
重建逻辑结构以提高电路平衡:
36 .乘法器设计log函数的Verilog HDL实现
华莱士乘法器
复数乘法器
通过复数的运算形成新的实部和虚部的过程
矢量乘法器:
在处理图形图像的过程中,信号不是一个个地发送,而是一个个地发送
对于数字电路设计来说,结构内容和算法内容对电路的指导意义非常重要
查找表乘法器:
log函数的Verilog HDL实现:
用erilog HDL设计采用常规八宝粥级数展开方式的log函数