HDL是对硬件电路的一种描述性设计语言,它的过程和传统C语言不一样
C语言是一种高级程序语言,然后把它编译成机器代码,然后对cpu,dsp,mcu这些处理器操作的过程,所以它只有代码到编译这个过程生成机器执行代码
而电路描述语言是在计算机上对硬件进行设计,目标是一个电路,最后是通过综合工具生成一个简单的元器件的生成关系,我们称之为网表
可能产生的错误设计:
Verilog HDL的电路描述方式具有多样性,这也决定了电路设计的多样性。例4.1-2是对一个多路选择器的设计,程序(a)采用的是真值表的形式,程序(b)采用的是逻辑表达式的形式,程序©采用的是基本逻辑单元的结构性描述形式。
组合电路的特点是,电路中任意时刻的稳态输出仅仅取决于该时刻的输入,而与电路原来的状态无关
需要考虑以下方面:
(1)所用的逻辑器件数目最少,器件的种类最少,且器件之间的连线最简单,这样的电路称为“最小化”电路
(2)为了满足速度要求,应使级数尽量少,以减少门电路的延迟
(3)电路的功耗应尽可能地小,工作时稳定可靠
(4)1是功能要求,2和3是性能要求
讲组合电路的时候:用真值表描述,用卡诺图化简得到最简代数表达式,再写出结构体描述。
!!!!但是我们发现卡诺图在HDL好像没有生存的余地,包括后面的有限状态机。这是因为它们这种优化的方法已经被数学完全的取代了,都交给综合工具去做了,和硬件描述语言的设计已经没有太大关系了
组合逻辑电路的描述方式有四种: 真值表、逻辑代数、结构描述、抽象描述。采用 VerilogHDL 进行组合逻辑电路设计主要采用的就是这几种方式
对于前三种设计方式,结构体描述读起来是最困难的,case语句加真值表是最直接的一种方式,数据流描述是一种最简化的描述
!!当你对数字电路的认知程度不同的时候选择的电路是不一样的,很多初学者都会选择真值表,然后发现有问题解决不了了,就会改成结构型描述。当水平达到一定程度时,直接数据流描述
第四个抽象描述方式
抽象描述方式的优点是当裁判数量特别多的时候用这种方式很快,这种方式实际上就是硬件描述语言的RTL的抽象描述方式
!!不能随便写,在这个例子中,我们要脑子里有一个加法器,一个数据比较器,然后去写这个加法器和数据比较器,而不是写完了让综合工具去解决
最后一步是综合,EDA 综合工具可以将 Verilog HDL程序综合成物理电路形式,通过电路优化,从而得到符合设计要求的最简化电路
!!综合工具一方面把电路从代码的方式变成简单元器件的连接关系,同时进行了优化,把它变成了一个最简单的元器件的连接关系
数字加法器是一种较为常用的逻辑运算器件,被广泛用于计算机、通信和多媒体数字集成电路中
代数逻辑表示为
对应的电路如图
利用连续赋值语句实现和利用行为描述方式实现
采用行为描述方式可以提高设计的效率,对于一个典型的多位加法器的行为描述设计仅需改变代码中输入和输出信号的位宽即可。例如一个 2输入8 bit 加法器,可以采用下面的 VerilogHDL程序代码实现。
!!要注意加法器串联多了会导致电路延迟增大,影响性能(具体见我数电的博客 https://blog.csdn.net/y_u_yu_yu_/article/details/127435416)
可以用四位超前进位加法器来提高性能(数学分析省略,原理可以去看上面的博客)
每次在输入地址的控制下,从多路输入数据中选择一路输出,其功能类似于一个单刀多掷开关
数字比较器,数字选择器,数字编译器等在电路中都有规定的对应的电路
构成8选1数据选择器
(1)多个2选1数据选择器的结构级描述
结构如下
(2)抽象描述方式。多路选择器的设计可以采用 case 语句直接进行设计。在这种设计方式中,只需考虑选择信号列表就可以实现功能更为复杂的数据选择器