Verilog HDL的故事 之 刺激和激励过程
- 格式:pdf
- 大小:3.75 MB
- 文档页数:56
verilog hdl语言100例详解Verilog HDL语言是一种硬件描述语言,用于描述数字电路和系统的行为和结构。
它是硬件设计工程师在数字电路设计中的重要工具。
本文将介绍100个例子,详细解释Verilog HDL语言的应用。
1. 基本门电路:Verilog HDL可以用于描述基本门电路,如与门、或门、非门等。
例如,下面是一个描述与门电路的Verilog HDL代码:```verilogmodule and_gate(input a, input b, output y);assign y = a & b;endmodule```2. 多路选择器:Verilog HDL也可以用于描述多路选择器。
例如,下面是一个描述2:1多路选择器的Verilog HDL代码:```verilogmodule mux_2to1(input a, input b, input sel, output y);assign y = sel ? b : a;endmodule```3. 寄存器:Verilog HDL可以用于描述寄存器。
例如,下面是一个描述8位寄存器的Verilog HDL代码:```verilogmodule register_8bit(input [7:0] d, input clk, input reset, output reg [7:0] q);always @(posedge clk or posedge reset)if (reset)q <= 0;elseq <= d;endmodule```4. 计数器:Verilog HDL可以用于描述计数器。
例如,下面是一个描述8位计数器的Verilog HDL代码:```verilogmodule counter_8bit(input clk, input reset, output reg [7:0] count);always @(posedge clk or posedge reset)if (reset)count <= 0;elsecount <= count + 1;endmodule```5. 加法器:Verilog HDL可以用于描述加法器。
共41页资源类别: HDL 语言内部公开1.0密级版本文档编号文档中心Verilog HDL 入门教程(仅供内部使用)yyyy/mm/dd日期:批准:日期:中研基础批准:2004.8.3日期:中研基础拟制:版权所有 不得复制修订记录初稿完成1.002004.8.3作者描述修订版本日期绝密请输入文档编号Verilog HDL 入门教程2004-08-16第2页,共41页版权所有,侵权必究目 录285 结构建模..............................................................274.8 case 语句. (25)4.7 条件语句 (25)4.6.6 连接运算符 (25)4.6.5 条件运算符 (24)4.6.4 按位逻辑运算符 (23)4.6.3 逻辑运算符 (22)4.6.2 关系运算符 (21)4.6.1 算术运算符 (21)4.6 运算符和表达式 (20)4.5.2 寄存器类型 (20)4.5.1 线网类型 (20)4.5 数据类型 (18)4.4.2 常量 (18)4.4.1 值集合 (18)4.4 数字值集合 (18)4.3 格式 (17)4.2 注释 (17)4.1.3 书写规范建议 (17)4.1.2 关键词 (17)4.1.1 定义 (17)4.1 标识符 (17)4 Verilog HDL 基本语法....................................................163.3.4 混合设计描述.. (15)3.3.3 行为描述方式 (14)3.3.2 数据流描述方式 (12)3.3.1 结构化描述方式 (12)3.3 三种建模方式 (11)3.2 时延 (11)3.1.3 模块语法 (10)3.1.2 模块的结构 (9)3.1.1 简单事例 (9)3.1 模块 (9)3 Verilog HDL 建模概述.....................................................72.4.2 能力. (7)2.4.1 历史 (7)2.4 Verilog HDL 简介 (6)2.3 设计方法学 (6)2.2 硬件描述语言 (5)2.1 数字电路设计方法 (5)2 HDL 设计方法学简介......................................................51 前言...................................................................绝密请输入文档编号Verilog HDL 入门教程2004-08-16第3页,共41页版权所有,侵权必究4010 附录A Verilog 保留字...................................................399 习题..................................................................398 其他方面..............................................................377.4 行为建模具体实例...................................................367.3 过程赋值语句......................................................357.2 顺序语句块........................................................357.1 简介.............................................................357 行为建模..............................................................346.3 数据流建模具体实例.................................................346.2 阻塞赋值语句......................................................346.1 连续赋值语句......................................................346 数据流建模............................................................315.4 结构化建模具体实例.................................................295.3 实例化语句........................................................285.2 模块端口..........................................................285.1 模块定义结构......................................................绝密请输入文档编号Verilog HDL 入门教程2004-08-16第4页,共41页版权所有,侵权必究Verilog HDL 入门教程关键词:摘 要:本文主要介绍了Verilog HDL 语言的一些基本知识,目的是使初学者能够迅速掌握HDL设计方法,初步了解并掌握Verilog HDL 语言的基本要素,能够读懂简单的设计代码并能够进行一些简单设计的Verilog HDL 建模。
可编辑修改精选全文完整版时序状态机的设计入门与提高计算机及具有存储器或按照所存储信息执行一系列操作的其他数字系统统称为“时序状态机”,其电路可以通过时序逻辑进行建模。
时序状态机的性能与组合逻辑不同,因为时序状态机的输出不仅仅取决于当前的输入值,而且取决于历史的输入值。
时序状态机被广泛应用于需要指定顺序操作的应用中。
所有的时序状态机都具有如图的通用反馈结构,在这种结构中时序状态机的下一状态是由当前状态和当前输入一起形成的:时序状态机可以按是否受一个公共的时钟控制(钟控)分为同步状态机和异步状态机;根据状态数目是否有限分为有限状态机和无限状态机。
此处只讨论有限状态机。
有限状态机的(FSM)分类有限状态机有米利(Mealy)机和摩尔(Moore)机:米利(Mealy)机:米利(Mealy)机的下一状态和输出都取决于当前状态和当前输入。
摩尔(Moore)机:摩尔(Moore)机的下一状态取决于当前状态和当前输入,而输出仅仅取决于当前状态。
有限状态机常用的描述、开发方法有限状态机可以借助时序图、状态表、状态图以及ASM图进行系统的描述与设计。
•时序图可以用于说明系统中及系统与周围环境的接口中信号的有效输入与状态转移之间的关系。
•状态表与状态转移表以表格的形式表示在当前状态和输入的各种组合下状态机的下一状态和输出•状态转移图(STG)是一种有向图,图中带有标记的节点或顶点与时序状态机的状态一一对应。
当系统处于弧线起点的状态时,用有向边或弧线表示在输入信号的作用下可能发生的状态转移。
米利机STG的顶点用状态进行标记,状态转移图的有向边有下面两种标记方法:(1)用能够导致状态向指定的下一状态转移的输入信号来标记(2)在当前状态下,用输入信号的输出来进行标记摩尔机的状态转移图与米利机相类似,但它的输出是由各状态的顶点来表示的,而不是在弧线上表示•算法状态机(ASM)图是时序状态机功能的一种抽象,是模拟其行为特性的关键工具。
他和它的故事VerilogHDL之刺激和激励过程博客:http//blog.ednchina.com/akuei2社区:http://www.oshcn.com1他和它的故事VerilogHDL之刺激和激励过程
博客:http//blog.ednchina.com/akuei2社区:http://www.oshcn.com2
目录目录....................................................................................................................................02第六章刺激和激励过程................................................................................................036.01精密计数........................................................................................................03实验二十一:仿真定时器............................................................................036.02刺激的各种输入............................................................................................11实验二十二之一:虚拟按键........................................................................11实验二十二之二:仿真按键消抖模块..........................................................20实验二十三:PS2模块仿真..........................................................................276.03模块相互刺激................................................................................................32实验二十四之一:仿真串口发送模块........................................................32实验二十四之二:仿真串口接收模块........................................................366.04麻烦的IO口仿真..........................................................................................42实验二十五:仿真带有IO的模块..............................................................43
总结....................................................................................................................................56他和它的故事VerilogHDL之刺激和激励过程
博客:http//blog.ednchina.com/akuei2社区:http://www.oshcn.com3
第六章:刺激和激励过程6.1精密计数当笔者看到精密计数笔者就觉得很好笑,精密计数确实是仿真中最重要的入门课,它和流水灯实验一样那么经典,为什么要这样说呢?从实验一到实验二十我们几乎都是在计数“几个时钟”,“在第几个时钟,发生什么事...”。当我们开始仿真稍微复杂的模块,常常要明白,模块之间的沟通,上一层模块在什么步骤(时钟)和下一层模块在什么步骤(时钟)有什么交互作用等。我们以一个简单的实验来解释这一切:
实验二十一:仿真定时器这个实验很简单,我们只要建立两个定时器,一个在1us产生定时,则另一个在3us产生定时,然后观察这两个定时器在不同状态的输出。
counter_module.v1.modulecounter_module2.(3.inputCLK,4.inputRSTn,5.6.output_1US,7.output_3US,8.output_is1US,9.output_is3US,10.output[4:0]C1,11.output[5:0]C212.);13.14./*******************************/15.16.parameterT1US=5'd20;17.18./*******************************/19.20.reg[4:0]Count_1US;21.regis1US;22.他和它的故事VerilogHDL之刺激和激励过程博客:http//blog.ednchina.com/akuei2社区:http://www.oshcn.com4
23.always@(posedgeCLKornegedgeRSTn)24.if(!RSTn)25.beginCount_1US<=5'd0;is1US<=1'b0;end26.elseif(Count_1US==T1US)27.beginCount_1US<=5'd0;is1US<=1'b1;end28.else29.beginCount_1US<=Count_1US+1'b1;is1US=1'b0;end30.31./*******************************/32.33.parameterT3US=6'd60;34.35./*******************************/36.37.reg[5:0]Count_3US;38.regis3US;39.40.always@(posedgeCLKornegedgeRSTn)41.if(!RSTn)42.beginCount_3US<=6'd0;is3US<=1'b0;end43.elseif(Count_3US==T3US)44.beginCount_3US<=6'd0;is3US<=1'b1;end45.else46.beginCount_3US<=Count_3US+1'b1;is3US<=1'b0;end47.48./*******************************/49.50.assign_1US=(Count_1US==T1US)?1'b1:1'b0;51.assign_3US=(Count_3US==T3US)?1'b1:1'b0;52.assign_is1US=is1US;53.assign_is3US=is3US;54.assignC1=Count_1US;55.assignC2=Count_3US;56.57./*******************************/58.59.endmodule
第16行是1us的常量声明,第17行是1us的标志寄存器is1US。第23~29是1us的定时器。第33行是3us的常量声明,第37行是3us的标志寄存器is3US。第40~46是3us的定时器。第50行是有组合逻辑驱动1us定时标志,第51行是由组合逻辑驱动的3us定时标志,第52行是由is1US标志寄存器驱动的1us定时标志,第53行是由is3US标志寄存器驱动的3us定时标志。第54~55行则是,计数寄存器Count_1US和Count_3US的相关输出。他和它的故事VerilogHDL之刺激和激励过程博客:http//blog.ednchina.com/akuei2社区:http://www.oshcn.com5
counter_module.vt1.`timescale1ns/1ps2.modulecounter_module_simulation();3.4.regCLK;5.regRSTn;6.7.wire_1US;8.wire_3US;9.10.wire_is1US;11.wire_is3US;12.13.wire[4:0]C1;14.wire[5:0]C2;15.16./************************/17.18.counter_modulei119.(20..CLK(CLK),21..RSTn(RSTn),22.._1US(_1US),23.._3US(_3US),24.._is1US(_is1US),25.._is3US(_is3US),26..C1(C1),27..C2(C2)28.);29.30./************************/31.32.initial33.begin34.RSTn=0;#1000;RSTn=1;35.CLK=0;forever#25CLK=~CLK;36.end37.38./************************/39.40.41.endmodule