- 1、本文档共286页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 基本逻辑电路设计实例 基本组合逻辑电路的实现 基本时序逻辑电路的实现 存储器的实现 §8.1 基本组合逻辑电路设计 6.4.2 文件包含`include `include是文件包含指令,它可将一个文件全部包含到另一个文件中。其格式如下: `include “文件名” 例: `include “../../halfadder.v” //双引号内是所包含文件的路径和文件名 module adder; …… endmodule 该模块adder包含模块halfadder.v 假设halfadder.v文件的内容如下: module halfadder; …… endmodule 编译时,adder.v中的`include这一行将由文件“../../halfadder.v”的内容替代。adder.v的内容变成: module halfadder; …… endmodule module adder; …… endmodule 6.4.3 时间尺度`timescale 在Verilog HDL模型中,所有时延都用单位时间表示。`timescale定义时延单位和时延精度,其格式如下: `timescale时间单位/时间精度 在这条命令中,时间单位参量是用来定义模块中仿真时间和延迟时间的基准单位的。时间精度参量是用来声明该模块的仿真时间的精确程度的,该参量被用来对延迟时间值进行取整操作(仿真前),因此该参量又可以被称为取整精度。 时间单位和时间精度参量值的数字必须是整数,其有效数字为1,10,100,单位为s,ms,us,ns,ps,fs。 如果在同一个程序设计里,存在多个`timescale命令,则用最小的时间精度值来决定仿真的时间单位。 例: `timescale 1ns/100ps module andfunc (z, a, b); output z; input a, b; and # (5.22, 6.17) u1 (z, a, b); //规定上升及下降时延 endmodule 时延单位是ns,时延精度是0.1ns(100ps)。因此,时延值5.22对应5.2ns(精度为0.1ns),时延6.17对应6.2ns。 若替换为`timescale 10ns/1ns 那么5.22对应52ns,6.17对应为62ns。 第7章 状态机 7.1 状态机 状态机是一个广义的时序电路,像移位寄存器、计数器等都算是它的特殊功能类型中的一种。 根据输入、输出及状态之间的关系,状态机可分两类,一类是Moore状态机,其输出值只取决于当前状态,与输入值无关;另一类是Mealy状态机,其输出值不但和当前状态有关,还和输入值有关。 一般可以通过在always内使用case语句来对状态机进行建模,状态信息存储在寄存器中,case语句的分支描述了每个状态的行为。 7.2 Moore有限状态机 Moore有限状态机(FSM)的输出只取决于状态,而与其输入无关,为这种有限状态机的行为进行建模,可以通过在always语句块内使用case语句实现,在每个case分支都应当有输出值和状态转换。 例:Moore FSM有4个状态ST0、 ST1、 ST2和ST3,它们转换关系如图所示。其中A是输入值,Z是输出值。A只能影响状态的改变,Z只与当前状态有关。 module moore_fsm (A, CLK, Z); input A, CLK; output Z; reg Z; parameter ST=0, ST=1, ST=2, ST=3; reg [1:0] moore_state; //存储状态的寄存器
文档评论(0)