Verilog HDL项目式教程 课件 项目6 数字电路设计举例.pptx
任务6.1表决器设计
任务6.2计数器设计
任务6.3分频器设计
任务6.4流水灯控制器设计
任务6.5交通灯控制器设计
任务6.6序列检测器设计
任务6.7汉字显示设计
任务6.8梯形波设计
任务6.9数字钟设计
任务6.10信号发生器设计
;任务6.1表决器设计;一、设计要求
基本要求:设计实现一个3人判决电路,若有2人或者超过2个人同意,则表决结果为通过,否则表决结果不通过。
拓展要求:读者可以在基本要求的基础上尝试完成一些拓展,如N人表决器、其他任意组合逻辑电路等。
本任务涉及的知识点有行为建模、数据流建模、结构建模、选择语句。
下面对这些知识点进行说明。
(1)各种建模方法得出的电路图不尽相同,但最终仿真结果完全相同。也就是说,虽然最终的实现电路不同,但功能相同。
(2)行为建模方式的典型特征是使用了always语句;数据流建模方式的典型特征是使用了assign语句;结构化建模的典型特征是使用了例化语句,包括门级原语例化。在一个模块中,可以采用以上三种建模方式中的任一种方式建模,也可以采用多种方式混合建模。
;(3)在可综合的设计中,条件语句if、多路分支语句case只能用在always语句块中,也就是只能用在行为建模中。
(4)从本任务中也可以看出,从门级建模到数据流建模再到行为建模,建模抽象程度越来越高,距离电路的具体实现越来越远,但是也越来越接近设计人员解决问题的思维。
二、设计分析
;(3)根据真值表列输出方程如下:
y=abc+abc+abc+abc
(4)采用代数化简法或者卡诺图化简法化简方程,如图6-1所示。
化简后的方程为y=ab+bc?+?ca。
(5)根据化简后的方程画出电路图,如图6-2所示。;三、设计与仿真
对于设计实现一个3人判决电路的五个步骤,也可以采用VerilogHDL语言进行数字电路建模,建模代码见例6-1,仿真代码见例6-2。
【例6-1】设计代码。
;下面对上述电路设计进行说明。
(1)?y1、y2、y3、y4、y5为设计的5个输出,分别对应着设计分析中的5个步骤的输出结果,其实现方法与步骤中的说明是完全吻合的。
(2)每个输出都分别对应着一???独立的组合逻辑电路,由一个assign语句或者一个always语句实现。
;【例6-2】仿真代码。;任务6.2?计?数?器?设?计;计数器是由基本的计数单元和一些控制门所组成的,计数单元则由一系列具有存储信息功能的触发器构成。计数器在数字系统中的应用广泛。例如,在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令;在运算器中作乘法、除法运算时记下加法、减法次数;在数字仪器中对脉冲进行计数;在实际应用中可以记录已经完成的工时数、产品数;等等。计数器在数字系统中主要用于对脉冲的个数进行计数,以实现测量、计数和控制功能,同时兼有分频功能。
一、设计要求
基本要求:设计实现一个模8加1计数器,计数值为0,1,2,3,4,5,6,7,0,…,依次循环。
拓展要求:在基本要求的基础上,读者可以尝试自行完成一些拓展,如模N计数器、任何计数器等。
本任务涉及的知识点有行为建模、结构化建模、状态机建模、计数器、图形化展示。
下面对这些知识点进行说明。;(1)计数器。
进行计数器设计需要清楚加减条件和停止条件。对于本例,进行0~7计数,使用3位表示计数结果,因此对加1条件以及停止条件都不需要进行额外处理。
(2)图形化展示。
当设计实现的是信号波形时,仿真波形可以用图形化的形式展示,这样既直观易懂,也可以提高学生对本门课程的学习兴趣。使用ModelSim进行图形化展开时,需要在ModelSim软件中将输出设置成模拟信号并展示出来。例如,信号发生器的输出通常使用仿真软件直接显示。
二、设计分析
实现计数器时,可以采用数字电路设计步骤求解得到电路图,然后使用HDL语言对电路图建模。
使用数字电路设计步骤可以得到电路图,具体的设计步骤与HDL语言无关,此处省略。此处仅给出使用传统数字电路方法得到的电路图,如图6-5所示。;对模8加1计数器进行功能分析,可以得到图6-6。图6-6中的U1、U2、U3分别对应着图6-5中从上到下的3个D触发器,各个触发器的clk、q、q_bar均在图中绘制了波形图,3个D触发器输出的值连续为000、001、010、011、100、101、110、111、000,为加1计数的结果。图6-6是分析电路图后绘制的波形图。;对于计数器,除了上述采用传统数字电路方法得到电路图外,还可以直接使用HDL语言进行行为建模,直接加1计数,计数器的加减条件和终止条件都非常明确。
计数器可以理解为一种状态转换,因此也非常适合使用状