《HELLO FPGA》- 硬件语法篇




    封面





    前 言

    什学硬件语法篇:家知道软件设计软件编程语言例熟知 CJava
    等等 FPGA 设计 HDL 语言例 VHDL Verilog HDL说直白点FPGA
    设计逻辑电路实现数字电路中学逻辑电路功硬件描述语言
    (VerilogVHDL)描述出需设计员够硬件编程思维编写代码拥扎实数
    字电路功底
    硬件语法篇包含容:该篇仅仅介绍 Verilog HDL 基概念语法更着重讲
    解 Verilog HDL 基设计思想优良代码书写规范风格






    目 录

    第章 Verilog 综述 1
    §11 什 Verilog? 3
    §12 Verilog VHDL 区 3
    §13 Verilog C 语言区 4
    第二章 Verilog 基础知识 5
    §21 Verilog 四值逻辑系统 7
    §22 Verilog 数类型 7
    221 寄存器数类型 7
    222 线网数类型 8
    223 参数数类型 8
    §23 Verilog 基运算符 8
    231 算术运算符 8
    232 关系运算符 9
    233 逻辑运算符 9
    234 条件运算符 9
    235 位运算符 10
    236 移位运算符 10
    237 拼接运算符 10
    238 运算符优先级 10
    第三章 Verilog 基础语法 13
    §31 Verilog 关键字 15
    §32 Verilog 基程序框架 16
    第四章 Verilog 关键问题解惑 21
    §41 Verilog 抽象级 23
    411 结构化描述方式 23
    412 数流描述方式 24
    413 行级描述方式 24
    §42 Verilog 模块化设计 25
    §43 端口选择正确数类型? 28
    §44 latch 产生 30
    §45 组合逻辑反馈环 32
    §46 阻塞赋值非阻塞赋值 34
    §47 FPGA 灵魂状态机 37
    471 状态机设计步骤 38
    472 状态机状态编码 38
    473 状态机描述方法 39
    §48 代码风格重性 42
    附 录 Verilog 语法手册 49
    I Verilog 模块 51
    II Verilog 端口 52
    III Verilog 线网 53

    IV Verilog 寄存器 55
    V Verilog 参数定义 56
    VI Verilog 块语句 58
    VII Verilog 较语句 60
    VIII Verilog 循环语句 63
    IX Verilog 务定义 65
    X Verilog 函数定义 67
    XI Verilog 等语句 68
    XII Verilog 赋值语句 68
    XIII Verilog 输入门 71
    XIV Verilog 输出门 72
    XV Verilog 三态门 72
    XVI Verilog 拉拉电阻 73
    XVII Verilog MOS 开关 73
    XVIIIVerilog 双开关 74
    XIX Verilog 户定义原语 74
    XX Verilog 驱动强度 76
    XXI Verilog 程性连续赋值 77
    XXII Verilog 指定块延时 78
    版权声明 79

















    Verilog 综述






    第章
    Verilog 综述
    §11 什Verilog?
    Verilog Verilog HDL 简称Verilog HDL 种硬件描述语言(HDL:Hardware
    Description Language) 硬件描述语言电子系统硬件行描述结构描述数流描述语
    言利种语言数字电路系统设计顶层底层(抽象具体)逐层描述设
    计思想系列分层次模块表示极复杂数字系统然利电子设计动化(EDA)
    工具逐层进行仿真验证中需变实际电路模块组合动综合工具转换门
    级电路网表接专集成电路 ASIC 现场编程门阵列 FPGA 动布局布线工
    具网表转换实现具体电路布线结构
    FPGA 设计中种设计方式绘制原理图编写描述语言代码等早起
    工程师原理图设计方式情独钟种输入方式够直观出电路结构快速理解
    电路着逻辑规模断攀升逻辑电路越越复杂种输入方式会显力心应
    付简单逻辑电路算实应付起复杂逻辑电路行取代便编写描述语
    言代码方式现绝数设计采代码完成
    目前流硬件描述语言两种:种 VHDL种 VerilogVHDL 全名 Very
    High Speed Integrated Circuit Hardware Description Language VHSIC译超高速集成
    电路硬件描述语言VHDL 发展较早语法严谨Verilog 类似 C 语言语法风格较
    Verilog VHDL 两种硬件描述语言已成 IEEE 标准VHDL 1987 年成 IEEE 标
    准Verilog 1995 年正式成 IEEE 标准 VHDL Verilog 早成 IEEE 标准
    VHDL 美国军方组织开发 Verilog 普通民间公司私财产转化
    基 Verilog 优越性成 IEEE 标准更强生命力初入 FPGA
    新手言掌握种硬件描述语言必
    §12 VerilogVHDL区
    介绍完 Verilog VHDL 两种语言接 Verilog VHDL 着样
    区Verilog VHDL 作流行硬件描述语言设计角度说VHDL 优
    Verilog VHDL 初描述数字硬件行设计 Verilog 初更简捷更
    效描述数字硬件电路仿真设计 VHDL 更适合描述更高层次硬件电路学
    角度说Verilog 优 VHDLVerilog 种非常容易掌握硬件描述语言
    C 语言编程基础通段时间学加段实际操作般二三月掌握
    种设计技术掌握 VHDL 设计技术较困难 VHDL 直观需 Ada 编程
    基础般少需半年掌握 VHDL 基设计技术说Verilog VHDL
    语言身没什优劣分长两种语言够完成数字电路系统
    设计务
    4 硬件语法篇 §1
    Zircon OptoElectronic Technology COLtd
    长期者想事 FPGA 事业工程师说懂种硬件描述语言显然
    够项目台条件环境素合作模式等必然导致里
    推荐家入门学语言应首选 Verilog 语言更进步更层时学 VHDL
    语言里需说明续文字教程者实例代码中 Verilog
    §13 VerilogC语言区
    说完 Verilog VHDL 区接说说 Verilog C 语言区Verilog
    设计初衷成种基语法 C 语言相硬件描述语言 C 语言 Verilog 设
    计初已许领域广泛应C 语言许语言素已许惯种 C 语
    言相似硬件描述语言电路设计员更容易学接受
    然 Verilog 语言根 C 语言设计 Verilog 语言具备 C 语言简洁易等特
    点Verilog 语言 C 语言着质区里容易理解发性例
    进行说明:写 C 语言代码知道C 语言代码句句串行执行
    代码语句行执行 Verilog 语言作硬件描述语言实现代码语句
    行执行效描述行硬件系统仅评价硬件描述语言写坏
    标准 C 编程语言标准完全
    里需注意果 C 语言软件编程验学 Verilog 时候定
    放弃 C 编程固思路学会硬件方式解决问题时刻提醒正设计
    电路行行空洞代码建立硬件设计思想更深入学 FPGA



















    Verilog 基础知识






    第二章
    Verilog 基础知识
    §21 Verilog四值逻辑系统
    首先先讲 Verilog 四值逻辑系统家图 21 示
    bufif1
    0
    Z
    VCC
    buf
    X
    buf
    1
    0’LowFalseLogic LowGroundVSS
    NegativeAssertion
    1’HighTrueLogic HighPowerVDD
    VCCPositive Assertion
    buf
    0
    X’UnknownOccurs at Logical Which
    Cannot be Resolved Conflict
    Z’High ImpedanceTriStated
    Disabled Driver(Unknown)

    图 21 Verilog 四值逻辑系统图
    Verilog 逻辑系统中四种值四种状态:逻辑 0:表示低电应电
    路 GND逻辑 1:表示高电应电路 VCC逻辑 X:表示未知高
    电低电逻辑 Z:表示高阻态外部没激励信号悬空状态
    §22 Verilog数类型
    Verilog 语言中三类数类型寄存器数类型线网数类型参数数
    类型名称中出真正数字电路中起作数类型应该寄存器数类型
    线网数类型遵守 Verilog 四值逻辑系统
    221 寄存器数类型
    首先介绍寄存器数类型谓寄存器数类型表示抽象数存储单
    元 always 语句 initial 语句等程语句中赋值 缺省值 x实际数字电
    路中果该程语句描述时序逻辑该寄存器变量应寄存器果该程语句描述
    组合逻辑该寄存器变量应硬件连线果该程语句描述完全组合逻辑
    该寄存器变量应锁存器见寄存器类型变量定会综合寄存器寄
    存器数类型种 regintegerreal 等中常 reg 类型方法
    8 硬件语法篇 §2
    Zircon OptoElectronic Technology COLtd

    1 reg a 定义 a 1bit reg 类型
    2 reg [70] b 定义 b 8bit reg 类型
    3 reg [70] cde 定义 cde 8bit reg 类型
    222 线网数类型
    说完寄存器数类型接线网数类型谓线网数类型表示
    Verilog 结构化元件间物理连线值驱动元件值决定例连续赋值门输出
    果没驱动元件连接线网线网缺省值 z线网数类型寄存器数类型样
    种 triwand wire 等中常 wire 类型方法:
    1 wire a 定义 a 1bit wire 类型
    2 wire [70] b 定义 b 8bit wire 类型
    3 wire [70] cde 定义 cde 8bit wire 类型
    223 参数数类型
    介绍参数数类型参数实常量通常出现 module 部
    常定义状态机状态数位宽延迟等编译时修改参数值
    常参数调模块中户实例化模块时根需配置参数定义
    参数时次定义参数参数参数间需逗号隔开里需注意
    参数定义局部前模块中效方法:
    1 parameter N 8'd15 方法
    2 parameter A 4'b0001 方法二
    3 B 4'b0010
    4 C 4'b0100
    5 d 4'b1000
    §23 Verilog基运算符
    介绍完 Verilog 数类型接 Verilog 基运算符Verilog 硬件描
    述语言运算符范围广运算符功分八类:1算术运算符2关系运算符
    3逻辑运算符4条件运算符5位运算符6移位运算符7拼接运算符面分
    进行介绍
    231 算术运算符
    首先介绍算术运算符谓算术逻辑运算符常说加减等
    类运算符抽象层级较高数字逻辑电路实现基非等基础门逻辑
    组合实现表 21 示




    §2 Verilog 基础知识 9
    httpwwwfpgags
    表 21 算术运算符
    符号 方法 说明
    + a + b a 加 b
    a b a 减 b
    * a * b a b
    a b a b
    a b a 模 b
    232 关系运算符
    关系运算符做条件判断进行关系运算符时果声明关系假
    返回值 0果声明关系真返回值 1关系运算符着相优先级
    关系运算符优先级低算术运算符优先级表 22 示
    表 22 关系运算符
    符号 举例 说明(返回结果真者假)
    > a > b a b
    < a < b a b
    < a > b a 等 b
    > a< b a 等 b
    a b a 等 b
    a b a 等 b
    233 逻辑运算符
    逻辑运算符连接关系表达式实现更加复杂判断般单独需
    配合具体语句实现完整意思表 23 示
    表 23 逻辑运算符
    符号 举例 说明(返回结果真者假)
    a a 非
    && a && b a b
    || a || b a b
    234 条件运算符
    Verilog 语言连续赋值功更加完善 C 语言中引入条件操作符构建
    两输入中选择作输出条件选择结构功等 always 中 ifelse 语句表
    24 示


    10 硬件语法篇 §2
    Zircon OptoElectronic Technology COLtd
    表 24 条件运算符
    符号 举例 说明
    a b c 果 a 真选择 b否选择 c
    235 位运算符
    位运算符类基运算符认直接应数字逻辑中非门等逻辑
    门位运算符非逻辑运算符逻辑逻辑逻辑非然处理数类型
    样硬件实现角度说没区表 25 示
    表 25 位运算符
    符号 举例 说明
    ~ ~a a 位进行取反
    & a & b a 位 b 相应位进行相
    | a | b a 位 b 相应位进行相
    ^ a ^ b a 位 b 相应位进行异
    ~^ a ~^ b a 位 b 相应位进行异非
    ^~ a ^~ b a 位 b 相应位进行异非
    236 移位运算符
    Verilog 中两种移位运算符:左移位运算符右移位运算符两种移位运算符 0
    填补移出空位表 26 示
    表 26 移位运算符
    符号 举例 说明
    << a << b a 左移 b 位
    >> a >> b a 右移 b 位
    237 拼接运算符
    Verilog 中特殊运算符位拼接运算符运算符两
    信号某位拼接起进行运算操作表 27 示
    表 27 拼接运算符
    符号 举例 说明
    {} {ab} a b 连接起
    {{}} {a{b}} b 重复 a 次
    238 运算符优先级
    运算符必然涉优先级问题便家查运算符优先级
    制作成表格表 28 示
    §2 Verilog 基础知识 11
    httpwwwfpgags
    表 28 运算符优先级
    运算符 优先级
    ~




    *
    +
    <<>>
    <<>>

    &
    ^^~
    |
    &&
    ||























    Verilog 基础语法







    第三章
    Verilog 基础语法
    讲完 Verilog 基础知识面讲 Verilog 基础语法然 Verilog 硬件描述
    语言完整语法结构系统语法结构应设计描述带方便 Verilog
    描述硬件电路建立硬件电路基础语法结构实际硬件电路应
    起 for 循环映射成实际硬件电路Verilog 硬件描述语言分
    综合综合语言面简单介绍综合综合
    (1) 谓综合编写Verilog代码够综合器转化相应电路结构
    常综合语句描述数字硬件电路
    (2) 谓综合编写 Verilog 代码法综合生成实际电路综
    合语句般描述数字硬件电路时仿真验证
    描述数字硬件电路
    §31 Verilog关键字
    说完综合综合两概念接继续讲解 Verilog 基础语法首先
    讲解 Verilog 关键字面出 Verilog 关键字表示
    表 31 Verilog 关键字
    and always assign begin buf
    bufif0 bufif1 case casex casez
    cmos deassign default defparam disable
    edge else end endcase endfunction
    endprimitive endmodule endspecify endtable endtask
    event for force forever fork
    function highz0 highz1 if ifnone
    initial inout input integer join
    large macromodule medium module nand
    negedge nor not notif0 notif1
    nmos or output parameter pmos
    posedge primitive pulldown pullup pull0
    pull1 rcmos real realtime reg
    release repeat rnmos rpmos rtran
    rtranif0 rtranif1 scalared small specify
    specparam strentgh strong0 strong1 supply0
    16 硬件语法篇 §3

    supply1 table task tran tranif0
    tranif1 time tri triand trior
    trireg tri0 tri1 vectored wait
    wand weak0 weak1 while wire
    wor xnor xor
    学 C 语言朋友定会该表吓什说呢知道C 语言
    区区 32 关键字 Verilog 然根 C 语言设计出关键字 C 语言
    关键字关键字果学相信家肯
    定崩溃实里家需担心前面说Verilog 分综合
    综合语句 Verilog 描述数字硬件电路需掌握综合器综
    合部分关键字面列出常综合关键字表 32 示
    表 32 Verilog 常综合关键字
    module endmodule input output inout
    wire reg parameter always assign
    if else begin end case
    endcase posedge negedge or default
    该表格中列出代码日编写代码常综合关键字掌握
    关键字语法方面说已足够牛工程师代码里非
    面关键字面简单介绍关键字:
    首先介绍 module endmodule成模块 Verilog 设计中基
    功块简单模块模块命名端口列表两部分组成整模块 module 开头
    endmodule 结尾module 面紧着模块名模块名字inputoutput
    inout 端口定义wire reg 声明数类型parameter 声明参数类型
    always 程赋值语句assing 连续赋值语句if else 成条件判断语句 C
    语言中 if else 样功begin end 成相 C 语言中括号
    caseendcase default 成分支条件语句 C 语言中 switch 样功
    posedegenegedge or 三关键字 always 关键字联合posedge 升
    触发negedge 降触发posedge or negedge 升降里需
    说明述关键字简单介绍具体方法续会结合实例进步
    进行介绍里家混面熟拉
    §32 Verilog基程序框架
    说完 Verilog 关键字接说 Verilog 基程序框架学 Verilog 基
    程序框架 Verilog 程序设计整体概念握进续 Verilog 语法
    学中更解学 C 语言时首先接触第程序Hello World
    然 Verilog 种数字逻辑电路设计语言数字电路中简单门例
    §3 Verilog 基础语法 17

    作入门学第程序门 Verilog 代码代码 31 示
    代码 31 门 Verilog 代码
    1 module yumen
    2 (
    3 a b c
    4 )
    5
    6 input a
    7 input b
    8 output c
    9
    10 assign c a & b
    11
    12 endmodule
    面简单介绍代码代码中a b 门输入c 门
    输出说该代码实现 2 输入门电里需说明家必分
    苛求细节语法着眼基程序框架行通面程序家总结:
     Verilog HDL 程序模块构成模块容嵌 module endmodule
    两语句间
     模块进行端口定义说明输入输出口然模块功进行行逻辑描述
     Verilog HDL 程序书写格式行写语句语句分写行
     endmodule 语句外语句数定义必须分号
    通面门 Verilog 代码想必家已初步解 Verilog 基程序框架面
    出较完整 Verilog 语法结构项目实战篇中动态数码显示例进
    行讲解代码 32 示
    代码 32 般 Verilog 语法结构
    1 module Example_Segled
    2 (
    3 输入端口
    4 CLK_50MRST_N
    5 输出端口
    6 SEG_DATASEG_EN
    7 )
    8
    9 input CLK_50M 时钟端口开发板 50M 晶振
    10 input RST_N 复位端口低电复位
    11 output reg [ 50] SEG_EN 数码端口
    12 output reg [ 70] SEG_DATA 数码数端口(查脚分配文档者原理图)
    13
    14 reg [150] time_cnt 控制数码闪烁频率定时计数器
    18 硬件语法篇 §3

    15 reg [150] time_cnt_n time_cnt 状态
    16 reg [ 20] led_cnt 控制数码亮灭显示数显示计数器
    17 reg [ 20] led_cnt_n led_cnt 状态
    18
    19 设置定时器时间 1ms计算方法 (1*10^3)us (150)us 50MHz 开发板晶振
    20 parameter SET_TIME_1MS 16'd50_000
    21
    22 时序电路 time_cnt 寄存器赋值
    23 always @ (posedge CLK_50M or negedge RST_N)
    24 begin
    25 if(RST_N) 判断复位
    26 time_cnt < 16'h0 初始化 time_cnt 值
    27 else
    28 time_cnt < time_cnt_n time_cnt 赋值
    29 end
    30
    31 组合电路实现 10ms 定时计数器
    32 always @ (*)
    33 begin
    34 if(time_cnt SET_TIME_1MS) 判断 10ms 时间
    35 time_cnt_n 16'h0 果达 10ms定时计数器会清零
    36 else
    37 time_cnt_n time_cnt + 27'h1 果未 10ms定时计数器会继续累加
    38 end
    39
    40 时序电路 led_cnt 寄存器赋值
    41 always @ (posedge CLK_50M or negedge RST_N)
    42 begin
    43 if(RST_N) 判断复位
    44 led_cnt < 3'h0 初始化 led_cnt 值
    45 else
    46 led_cnt < led_cnt_n led_cnt 赋值
    47 end
    48
    49 组合电路判断时间实现控制显示计数器累加
    50 always @ (*)
    51 begin
    52 if(time_cnt SET_TIME_1MS) 判断 10ms 时间
    53 led_cnt_n led_cnt + 1'h1 果达 10ms计数器进行累加
    54 else
    55 led_cnt_n led_cnt 果未 10ms计数器保持变
    56 end
    57
    58 组合电路实现数码数字显示
    §3 Verilog 基础语法 19

    59 always @ (*)
    60 begin
    61 case (led_cnt)
    62 3'b000 SEG_DATA 8'b10111111 计数器 0 时数码会显示 0
    63 3'b001 SEG_DATA 8'b10000110 计数器 1 时数码会显示 1
    64 3'b010 SEG_DATA 8'b11011011 计数器 2 时数码会显示 2
    65 3'b011 SEG_DATA 8'b11001111 计数器 3 时数码会显示 3
    66 3'b100 SEG_DATA 8'b11100110 计数器 4 时数码会显示 4
    67 3'b101 SEG_DATA 8'b11101101 计数器 5 时数码会显示 5
    68 default SEG_DATA 8'b10111111
    69 endcase
    70 end
    71
    72 组合电路控制数码亮灭
    73 always @ (*)
    74 begin
    75 case (led_cnt)
    76 3'b000 SEG_EN 6'b111110 计数器 0 时数码 SEG1 显示
    77 3'b001 SEG_EN 6'b111101 计数器 1 时数码 SEG2 显示
    78 3'b010 SEG_EN 6'b111011 计数器 2 时数码 SEG3 显示
    79 3'b011 SEG_EN 6'b110111 计数器 3 时数码 SEG4 显示
    80 3'b100 SEG_EN 6'b101111 计数器 4 时数码 SEG5 显示
    81 3'b101 SEG_EN 6'b011111 计数器 5 时数码 SEG6 显示
    82 default SEG_EN 6'b111111
    83 endcase
    84 end
    85 endmodule
    代码中出该代码包含综合关键字代码实现
    功 A4 开发板六数码分显示 012345里需注意应
    该注意力放关键字注意力放代码实现功 always
    关键字会通面代码知道 alywas 关键字两种方法然
    关键字葫芦画瓢运代码中第三章 Verilog 基础语
    法讲解完



























    Verilog 关键问题解惑






    第四章
    Verilog 关键问题解惑
    §41 Verilog抽象级
    谓抽象级实际指物理电路层次 Verilog 语言描述
    Verilog 硬件描述语言支持五种级:
    (1)系统级
    (2)算法级
    (3)RTL 级
    (4)门级
    (5)开关级
    中系统级算法级属行级描述方式 RTL 级称数流描述方式门级
    开关级属结构化描述方式面三种方式分进行介绍
    411 结构化描述方式
    首先讲解结构化描述方式结构化描述方式原始描述方式抽象级低
    描述方式接实际硬件结构描述方式采结构化描述方式
    编写 Verilog 代码思路面包板搭建数字电路时样唯点通
    Verilog 形式描述数字电路需元器件间连接关系样罢
    够读者更直观更容易理解结构化描述方式里数字电路篇中三
    表决器例然结合出三表决器结构描述方式代码进行详细讲解说明结
    构化描述方式代码代码 41 示
    代码 41 结构化描述方式代码
    1 module Example_Structure Example_Structure模块开始
    2 (
    3 输入端口
    4 ABC
    5 输出端口
    6 L
    7 )
    8
    9 input A 模块输入端口 A
    10 input B 模块输入端口 B
    11 input C 模块输入端口 C
    12 output L 模块输出端口 L
    13
    14 wire ABBCAC 部信号声明 ABBCAC
    15
    24 硬件语法篇 §4
    Zircon OptoElectronic Technology COLtd
    16 and U1(ABAB) 门(AB 信号进入)(A B 信号 AB 输出)
    17 and U2(BCBC) 门
    18 and U3(ACAC) 门
    19
    20 or U4(LABBCAC) 门
    21
    22 endmodule 模块结束
    代码中出该代码描述三表决器逻辑电路图
    412 数流描述方式
    数流描述方式结构化描述方式抽象级高需清晰刻画出具
    体数字电路架构较直观表达底层逻辑行基数流描述方式形象点
    说模块容器量外部信息模块输入端口流入相应量处理
    信息会模块输出端口流出基种思路编写 Verilog 代码称数流描述方
    式数流描述方式称 RTL 级描述方式寄存器传输级描述面样三
    表决器例出三表决器数流描述方式代码代码 42 示:
    代码 42 数流描述方式代码
    1 module Example_Dataflow Example_Dataflow模块开始
    2 (
    3 输出端口
    4 ABC
    5 输入端口
    6 L
    7 )
    8
    9 input A 模块输入端口 A
    10 input B 模块输入端口 B
    11 input C 模块输入端口 C
    12 output L 模块输出端口 L
    13
    14 assign L ((A) & B & C) | (A & (B) & C) | (A & B & (C)) | (A & B & C)
    15
    16 endmodule 模块结束
    代码中出该代码描述三表决器逻辑表达式
    413 行级描述方式
    前面两种描述方式起行级描述方式抽象级高概括力强规模稍
    设计行级描述方式家知道高级语言执行思路串行例
    C 语言序执行语句更容易帮助表达设计思想尤描述时序逻辑变
    容易然 FPGA 设计思路行 Verilog 中支持量串行语句元素
    §4 Verilog 关键问题解惑 25
    httpwwwfpgags
    见行级描述方式载体串行语句时辅行语句描述算法间
    连接关系面样三表决器例出三表决器行级描述方式代码代
    码代码 43 示
    代码 43 行级描述方式代码
    1 module Example_Behavior Example_Behavior模块开始
    2 (
    3 输入端口
    4 ABC
    5 输出端口
    6 L
    7 )
    8
    9 input A 模块输入端口 A
    10 input B 模块输入端口 B
    11 input C 模块输入端口 C
    12 output reg L 模块输出端口 L
    13
    14 always @ (ACB) always 组合逻辑中法
    15 begin always @ (ABC)解析: ABC
    16 case({ABC}) 中信号变化便会执行 begin 中 case 语句
    17 3'b000 L 1'b0 写成 always @ (*) always @ (ABC)功相
    18 3'b001 L 1'b0 {ABC}解析: ABC 三条线合成条总线
    19 3'b010 L 1'b0 举例说明:{1'b11'b0}2'b10
    20 3'b011 L 1'b1
    21 3'b100 L 1'b0
    22 3'b101 L 1'b1
    23 3'b110 L 1'b1
    24 3'b111 L 1'b1
    25 defaultL 1'bx 省略
    26 endcase case 语句结束
    27 end begin 语句结束
    28
    29 endmodule module 语句结束
    代码中出该代码描述三表决器真值表
    §42 Verilog模块化设计
    模块化设计 FPGA 设计中重技巧够型设计分工协作仿真
    测试更加容易代码维护升级更加便利谓模块化设计较复杂系统
    定规划分模块然分模块进行设计模块全完成
    模块机组合起终够完成整复杂系统设计里
    半加器例进行说明图 41 示
    26 硬件语法篇 §4
    Zircon OptoElectronic Technology COLtd
    半加器顶层
    门模块 异模块

    图 41 半加器模块化设计
    该图中出半加器分成门模块异模块需完成实现
    门模块异模块然实现门模块异模块相结合终实现半加器
    面出该图相应 Verilog 代码首先出半加器顶层模块代码代码 44

    代码 44 半加器顶层模块代码
    1 module Example_Module
    2 (
    3 input a
    4 input b
    5 output s
    6 output c
    7 )
    8
    9 Example_yumen yumen_module
    10 (
    11 yumen_a(a)
    12 yumen_b(b)
    13 yumen_c(c)
    14 )
    15
    16 Example_yihuo yihuo_module
    17 (
    18 yihuo_a(a)
    19 yihuo_b(b)
    20 yihuo_s(s)
    21 )
    22
    23 endmodule
    该代码中出第 1 行模块开始模块名 Example_Module第 2 7 行
    端口声明定义 2 输入端口 a b2 输出端口 s c中 a b 代表两加
    数s 代表两加数c 代表进位第 9 行例化门模块中 Example_yumen
    Example_yumenv 模块里相应模块名yumen_module 意命名区分
    例化相模块第 10 14 行信号例化中yumen_a 门模块中信号必
    §4 Verilog 关键问题解惑 27
    httpwwwfpgags
    须门模块中信号名致行(a) 顶层模块中信号必须顶层模块中信号名
    致行第 16 21 行例化异模块例化门理完顶层模块面
    门模块代码代码 45 示
    代码 45 门模块代码
    1 module Example_yumen
    2 (
    3 input yumen_a
    4 input yumen_b
    5 output yumen_c
    6 )
    7
    8 assign yumen_c yumen_a && yumen_b
    9
    10 endmodule
    该代码中出该代码简单实现 2 输入门功面
    异模块代码代码 46 示
    代码 46 异模块代码
    1 module Example_yihuo
    2 (
    3 input yihuo_a
    4 input yihuo_b
    5 output yihuo_s
    6 )
    7
    8 assign yihuo_s yihuo_a ^ yihuo_b
    9
    10 endmodule
    该代码中出门模块基差实现 2 输入异
    门功出实例较简单门模块中代码异模块中代码
    写顶层模块中感觉复杂里想家该实例中够更理
    解明白模块化设计概念思想半加器 RTL 视图通观察 RTL
    视图够更深刻感受模块化带层次感图 42 示
    28 硬件语法篇 §4
    Zircon OptoElectronic Technology COLtd

    图 42 半加器 RTL 视图
    通该图半加器模块仅层次清晰思路明确代码写起
    游刃余
    §43 端口选择正确数类型?
    Verilog 中困惑方 reg wire 然声明 reg wire 规简单
    新手总难理解输入输出端口底 reg 类型 wire 类型针
    情况进行详细讲解家综合出实际电路模块图 43 示
    A
    B
    Y
    int1
    int2
    O
    输入端口(右图
    int1int2信号)
    net输入端口
    netregister驱

    输出端口(O)
    netregister类型
    输出端口驱动
    net

    图 43 实际电路模块图
    图中出输入 A 输入 B 两端口说线网类型
    输入 A 输入 B 两端口寄存器线网驱动说寄存器线网连
    接两输入端口作输入源输出端口 Y 说线网寄存器类
    型输出端口 Y驱动线网类型样说较抽象面结合具体实例进
    行说明代码代码 47 示
    代码 47 数类型模块代码
    1 module Example_Datatype
    2 (
    3 abcdo1o2
    §4 Verilog 关键问题解惑 29
    httpwwwfpgags
    4 )
    5
    6 input abcd
    7 output o1o2
    8
    9 reg cd
    10 reg o1
    11 reg o2
    12
    13 assign o2 c && d
    14
    15 always @ (a or b)
    16 begin
    17 if(a)
    18 o1 b
    19 else
    20 o1 1'b0
    21 end
    22
    23 endmodule
    首先先简单介绍该代码第 1 11 行端口数类型声明 第 13 行
    assign 连续赋值语句实现 2 输入门电路第 15 21 行 always 程赋值语句
    实现二选数选择器通端口 a 选择 o1 输出 b 输出 0介绍完该代码
    面该代码中错误果该代码放入 Quartrus II 软件进行编译
    Quartus II 软件会弹出图 44 示错误页面

    图 44 Quartus II 软件编译错误提示窗口
    该图中出c 声明 reg 类型 variable data type里什
    会 varibale新 2001verilog 标准中已没寄存器(register)类型
    register 改成 variable 变量类型般说较惯称寄存器类型
    什 c d 声明寄存器类型? c d 输入端口前面已说
    输入端口定义成寄存器类型定义 wire 类型里进行代码修改
    reg c reg d 注释掉默认类型 wire 类型修改完成通 Quartus
    II 软件进行编译代码然错错误提示信息图 45 示
    30 硬件语法篇 §4
    Zircon OptoElectronic Technology COLtd

    图 45 Quartus II 软件编译错误提示窗口
    该图中出o2 必须线网类型许朋友会说前面说输出端
    口说线网寄存器类型什里输出端口 o2 必须线网类型
    寄存器类型呢? o2 关键字 assign 指定前面说 assign 种连续
    赋值语句必须 wire 类型点家定记清楚 o1 必须定义 reg 类型
    什呢? always 里面赋值必须 reg 类型 o2 注释掉
    然次通 Quartus II 软件进行编译时代码没出现错误通编译
    相信家已知道端口选择正确数类型补充说明点家
    图 46 示

    图 46 数类型 RTL 视图
    该图中出 o1 声明成 reg 类型没综合成触发器
    寄存器 reg 类型 always 等程块中赋值信号果该 always 模块描
    述时序逻辑电路该信号常常综合 D 触发器果该 always 模块描述组合逻
    辑电路该信号会综合成连线
    §44 latch产生
    always 程块中描述组合逻辑电路时果条件语句没说明全部条件
    会产生锁存器说 latch面结合具体实例进行说明代码
    代码 48 示


    §4 Verilog 关键问题解惑 31
    httpwwwfpgags
    代码 48 产生 latch 电路模块代码
    1 module Example_Latch
    2 (
    3 clkqdataenable
    4 )
    5
    6 input clk
    7 input data
    8 input enable
    9 output q
    10
    11 reg q
    12
    13 always @ (posedge clk)
    14 begin
    15 if(enable)
    16 q < data
    17 else
    18 q < q
    19 end
    20
    21 always @ (*)
    22 begin
    23 if(enable)
    24 q data
    25 else
    26 q 1'b0
    27 end
    28
    29 endmodule
    典型产生锁存器电路先简单介绍该代码第
    1 11 行端口声明第 21 27 行 always 模块该 always 模块组合电
    路 enable 1 时会 data 值赋值 q q always 中进行赋值 q
    reg 类型介绍完代码面 RTL 视图图 47 示

    图 47 产生 latch RTL 视图
    32 硬件语法篇 §4
    Zircon OptoElectronic Technology COLtd
    该图中该电路终生成 latch许朋友会问什会产生锁存
    器? enable 1 时候 data 端输入 q enable 0 时候
    没执行程序电路默认情况保持原值变会产生锁存器面
    第 25 26 行代码注释掉然次查 RTL 视图图 48


    图 48 二选数选择器 RTL 视图
    该图中出条件语句补全电路生成 latch生
    成二选数选择器建议家写组合逻辑时候定注意 if
    else 语句量种条件考虑进条件写全样会避免 latch 产生
    补充说明点 always 程块中描述时序逻辑电路时条件
    语句没说明全部条件该电路会产生锁存器面代码基础描述组合
    逻辑电路代码注释掉然已准备时序逻辑电路代码注释掉然
    通 Quartus II 软件进行编译查 RTL 视图图 49 示

    图 49 D 触发器 RTL 视图
    该图中出电路没综合成 latch综合成 D 触发器时序
    逻辑电路说 else 没完全样 D 触发器说默认情况
    保持原值 enable 端口相端口q 保持原值入新值
    端口 enable 决定 Verilog 语言中 latch 产生般组合电路中条件完整造成
    §45 组合逻辑反馈环
    组合逻辑反馈环路数字步逻辑设计忌容易振荡毛刺时序违规等问题引
    §4 Verilog 关键问题解惑 33
    httpwwwfpgags
    起整系统稳定面结合具体实例进行说明代码 49 示
    代码 49 组合逻辑反馈环电路模块代码
    1 module Example_Feedback
    2 (
    3 data_in1data_in2data_out
    4 )
    5
    6 input data_in1
    7 input data_in2
    8 output data_out
    9
    10 assign data_out (data_in2) data_in1 (~data_out | data_in1)
    11
    12 endmodule
    典型组合逻辑反馈环电路先简单介绍该代码
    第 1 8 行端口声明第 10 行 assign 连续赋值语句 data_in 1 时
    data_in1 赋值 data_out data_in 0 时便(~data_out | data_in1)赋值
    data_out data_out assign 关键字指定 data_out wire 类型介绍
    完代码面 RTL 视图图 410 示

    图 410 组合逻辑反馈环电路 RTL 视图
    该图中出输出端口 data_out 直接通组合逻辑反馈门输入端
    口时假设 data_in1 data_in2 1毋容置疑电路会输出 1果
    data_in1 data_in2 0时候需判断 data_out 反馈信号果时
    data_out 1输出 0果时 data_out 0输出 1
    出没稳定状态电路存确定性果代码放入 Quartus II 软件中进
    行编译 Quartus II 软件会出警告图 411 示

    图 411 Quartus II 软件编译警告提示窗口
    34 硬件语法篇 §4
    Zircon OptoElectronic Technology COLtd
    该图中Quartus II 软件提示说 Found combinational loop of 2 nodes
    然种警告致命错误影响编译通组合逻辑电路反馈环实现种功话
    允许样做果确实需样做话通时序电路步反馈实现
    面述组合逻辑电路改时序逻辑电路代码 410 示
    代码 410 避免组合逻辑反馈环电路模块代码
    1 module Example_Feedback
    2 (
    3 data_in1data_in2data_outclkrst_n
    4 )
    5
    6 input clk
    7 input rst_n
    8 input data_in1
    9 input data_in2
    10 output data_out
    11
    12 reg data_out_r
    13
    14 always @ (posedge clk or negedge rst_n)
    15 begin
    16 if(rst_n)
    17 data_out_r < 1'b0
    18 else
    19 data_out_r < (data_in2) (data_in1) (~data_out_r | data_in1)
    20 end
    21
    22 assign data_out data_out_r
    23
    24 endmodule
    该代码前面代码功样里进行介绍里需
    说明 data_out_r always 模块中赋值需 data_out_r 定义成
    reg 类型 data_out assign 指定需 data_out 定义成 wire 类型
    果该代码放 Quartus II 软件中进行编译警告窗口中 combinational
    loop 警告信息
    §46 阻塞赋值非阻塞赋值
    阻塞赋值非阻塞赋值说 Verilog 语言中难理解概念甚验
    Verilog 设计工程师完全搞明白究竟什时候阻塞赋值什时候非阻塞赋值
    样针该问题阻塞赋值非阻塞赋值含义详细解释清楚开始
    讲解阻塞赋值非阻塞赋值前先说明阻塞赋值等号()表
    示非阻塞赋值等号(<)表示知道阻塞赋值非阻塞赋值符号
    §4 Verilog 关键问题解惑 35
    httpwwwfpgags
    接结合具体实例进行说明代码 411 示
    代码 411 阻塞赋值非阻塞赋值顶层模块代码
    1 module Example_Block
    2 (
    3 clkblock_inblock_out1block_out2no_block_out1no_block_out2
    4 )
    5
    6 input clk
    7 input block_in
    8 output block_out1
    9 output block_out2
    10 output no_block_out1
    11 output no_block_out2
    12
    13 block block_init
    14 (
    15 clk (clk )
    16 block_in (block_in )
    17 block_out1 (block_out1 )
    18 block_out2 (block_out2 )
    19 )
    20
    21 no_block no_block_init
    22 (
    23 clk (clk )
    24 no_block_in (block_in )
    25 no_block_out1 (no_block_out1 )
    26 no_block_out2 (no_block_out2 )
    27 )
    28
    29 endmodule
    该代码中顶层模块 Example_Block 中包含两模块模块
    block 阻塞赋值模块 no_block 非阻塞赋值代码简单
    没逻辑设计面 block 模块代码 412 示
    代码 412 阻塞赋值模块代码
    1 module block
    2 (
    3 clkblock_inblock_out1block_out2
    4 )
    5
    6 input clk
    7 input block_in
    36 硬件语法篇 §4
    Zircon OptoElectronic Technology COLtd
    8 output block_out1
    9 output block_out2
    10
    11 reg block_out1
    12 reg block_out2
    13
    14 always @ (posedge clk)
    15 begin
    16 block_out1 block_in
    17 block_out2 block_out1
    18 end
    19
    20 endmodule
    该代码中第 1 12 行端口声明声明 4 端口中 2
    输入端口2 输出端口第 14 18 行 always 模块 always 模块中先输
    入端口 block_in 赋值 block_out1然 block_out1 赋值 block_out2里
    需注意阻塞赋值()完阻塞赋值模块面非阻塞赋
    值模块代码 413 示
    代码 413 非阻塞赋值模块代码
    1 module no_block
    2 (
    3 clkno_block_inno_block_out1no_block_out2
    4 )
    5
    6 input clk
    7 input no_block_in
    8 output no_block_out1
    9 output no_block_out2
    10
    11 reg no_block_out1
    12 reg no_block_out2
    13
    14 always @ (posedge clk)
    15 begin
    16 no_block_out1 < no_block_in
    17 no_block_out2 < no_block_out1
    18 end
    19
    20 endmodule
    该代码中阻塞模块代码基差唯
    always 模块赋值中非阻塞赋值(<) 通两代码发现两代
    §4 Verilog 关键问题解惑 37
    httpwwwfpgags
    码基样两实现功完全面开该模块 RTL 视图
    究竟着样图 412 示

    图 412 阻塞非阻塞赋值模块 RTL 视图
    RTL Viewer 中清楚阻塞赋值生成电路两联 D 触
    发器非阻塞赋值生成电路两串联 D 触发器生成电路
    样想象出产生波形截然面出该模块仿真波
    形图图 413 示

    图 413 阻塞非阻塞赋值模块仿真波形图
    该仿真波形图中出block_out1block_out2 no_block_out1三
    波形致 no_block_out2 波形确实什会出现种情况呢面
    详细说明:
    (1) 阻塞赋值()序执行说写前面语句先执行写面语句
    执行般组合逻辑电路
    (2) 非阻塞赋值(<)行执行说写前面语句面语句时执行
    书写序没关系般时序逻辑电路
    带着想法次观代码波形时候发现确实样子
    §47 FPGA灵魂状态机
    通前面学知道 Verilog 中程序行执行实际工程应
    中需实现具定序工作应该实现呢?需状态
    38 硬件语法篇 §4
    Zircon OptoElectronic Technology COLtd
    机解决述问题问题什状态机?谓状态机够根控制信号预先
    设定状态进行状态转移协调相关信号动作完成特定操作控制中心通状态机种方
    法降低抽象难度时提高代码读性维护性状态机简写 FSM(Finite State
    Machine)分 2 类:
    (1) 输出状态关输入关称摩尔(Moore)状态机
    (2) 输出仅状态关输入关系称米里(Mealy)状态机
    状态机通常包括组合逻辑时序逻辑中时序逻辑组触发器组成记忆前
    状态组合逻辑分次态逻辑输出逻辑两部分次态逻辑功确定限状态机
    状态输出逻辑功确定限状态机输出
    471 状态机设计步骤
    讲解完什状态机面说说设计状态机通常设计状态机分
    四步骤:
    (1) 根实际需选择状态机结构确定采摩尔型状态机米里型状态机
    (2) 根实际情况分析设计求列出状态机状态然状态进行状态编码
    (3) 根状态转移关系输出函数画出状态图里需注意设计问题
    说会构造出状态图状态图直观反映状态机状态间
    转换关系转换条件利理解状态机工作原理时求设计状态
    数太状态数较状态机般采状态表方法列出状态机转移条

    (4) 根花状态图采硬件描述语言状态机进行描述
    472 状态机状态编码
    说完状态机设计步骤接说说状态机状态编码谓状态编码通
    编码值区分状态状态唯标识 Verilog 描述
    状态机时通常参数定义语句 parameter 指定状态编码常状态编码三种分:递
    增二进制编码格雷编码 onehot 编码表 41 示
    表 41 状态机三种编码方案
    递进二进制编码 格雷编码 onehot 编码
    00 00 0001
    01 01 0010
    10 11 0100
    11 10 1000
    通该表出:
    (1) 递增二进制编码:种编码方式效率高译码程中需二进制位
    §4 Verilog 关键问题解惑 39
    httpwwwfpgags
    参译码状态较状态跳转条件较复杂时会导致组合逻辑
    (2) 格雷编码:种编码方式够避免进入错误状态常高性设计
    (3) onehot 编码:种编码方式占 D 触发器资源通常递增二进制编码
    状态数等触发器数冗余触发器译码电路较简单速度非常

    里需注意种编码方式状态机中状态应符号常量
    应该直接编码数值赋予状态意义名字设计验证代码读性益
    473 状态机描述方法
    状态机描述方法状态机描述代码风格三种:分段式状态机
    二段式状态机三段式状态机三种方法面分进行介绍
    (1) 段式状态机:逻辑写 always 模块中然种写法功
    说没错误读性差编写时候容易出错利维护
    (2) 二段式状态机:组合逻辑时序逻辑分开具较读性相容易维护
    组合逻辑输出较易出现毛刺等常见问题
    (3) 三段式状态机:具两段式优点状态输出进行寄存效滤毛
    刺里推荐读者三段式写法
    够家进步解三段式状态机面数字电路篇中动售货机
    例面出动售货机三段式状态机代码代码 414 示
    代码 414 三段式状态机代码
    1 module Example_State
    2 (
    3 XZCLK_50MRST_N
    4 )
    5
    6 input CLK_50M
    7 input RST_N
    8 input X
    9 output Z
    10
    11 reg Z
    12 reg Z_N
    13
    14 parameter S0 2'b00
    15 parameter S1 2'b01
    16 parameter S2 2'b10
    17
    18 reg [10] FSM_CS
    19 reg [10] FSM_NS
    40 硬件语法篇 §4
    Zircon OptoElectronic Technology COLtd
    20
    21 always @ (posedge CLK_50M or negedge RST_N)
    22 begin
    23 if(RST_N)
    24 FSM_CS < 2'b00
    25 else
    26 FSM_CS < FSM_NS
    27 end
    28
    29 always @ (*)
    30 begin
    31 case(FSM_CS)
    32 S0
    33 begin
    34 if(X 1'b1)
    35 FSM_NS S1
    36 else
    37 FSM_NS S0
    38 end
    39 S1
    40 begin
    41 if(X 1'b1)
    42 FSM_NS S2
    43 else
    44 FSM_NS S1
    45 end
    46 S2
    47 begin
    48 if(X 1'b1)
    49 FSM_NS S0
    50 else
    51 FSM_NS S2
    52 end
    53 endcase
    54 end
    55
    56 always @ (posedge CLK_50M or negedge RST_N)
    57 begin
    58 if(RST_N)
    59 Z < 1'b0
    60 else
    61 Z < Z_N
    62 end
    63
    §4 Verilog 关键问题解惑 41
    httpwwwfpgags
    64 always @ (*)
    65 begin
    66 if((FSM_CS S2) && (X 1'b1))
    67 Z_N 1'b1
    68 else
    69 Z_N 1'b0
    70 end
    71
    72 endmodule
    面根代码结合动售货机家进行讲解里假设 X 元硬币输入
    投入元硬币 X 1未投入元硬币 X 0Z 饮料输出送出饮料 Z 1未送出饮料
    Z 0S0 初态S1 投入元状态S2 投入两元状态首先动售货机处
    S0 状态时果投入元硬币说X 等 1电路状态 S0 转换
    S1 状态表示已收枚硬币收枚硬币饮料会送出说Z
    0电路处 S1 状态时投入元硬币说X 等 1电路状态会
    S1 状态转换 S2 状态表示已连续收两元硬币连续收两饮料
    会送出Z 0电路处 S2 状态时投入枚元硬币说 X 等 1
    电路状态会 S2 状态转换 S0 状态表示已连续收三元硬币时饮料便会送
    出Z 1介绍完代码面该三段式状态机状态图图 414 示

    图 414 三段式状态机状态图
    该图中容易出三段式状态机状态转移情况里需说明该状
    态图根编写 Verilog 代码 Quartus II 软件动生成
    42 硬件语法篇 §4
    Zircon OptoElectronic Technology COLtd
    §48 代码风格重性
    面讲解代码风格重性代码风格重重先说先
    里家准备 4 种风格代码然代码少实现功
    样实现 LED 闪烁闪烁间隔时间 1 秒首先先第种风格
    代码 415 示
    代码 415 第种风格代码
    1 module Example_Style3
    2 (
    3 abc
    4 )
    5
    6
    7 外部端口声明
    8
    9 input a
    10 input b
    11 output c
    12
    13
    14 部端口声明
    15
    16 reg e
    17 reg [260] d
    18
    19 parameter f 27'd50_000_000
    20
    21
    22 逻辑功实现
    23
    24 always @ (posedge a or negedge b)
    25 begin
    26 if(b)
    27 begin
    28 e < 1'b0
    29 end
    30 else if (d f)
    31 begin
    32 e < ~e
    33 d < 1'b0
    34 end
    35 else d d + 1'b1
    36 end
    §4 Verilog 关键问题解惑 43
    httpwwwfpgags
    37
    38 assign c e
    39
    40 endmodule
    代码中出代码确实够简洁简洁已知道该代码实现什
    功代码语法结构格式排版说非常犯错误
    命名规命名做简洁清晰效做见名知意代码完
    全出命名意义出该代码三端口中 a b 输入端口c 输出端
    口果 always 模块肯定猜出 a 表示时钟端口b 表示复位端口
    c 表示 LED 灯说完第种代码风格接第二种代码风格代码 416

    代码 416 第二种风格代码
    1 module Example_Style2(CLK_50MRST_NLED1)
    2 input CLK_50M
    3 input RST_N
    4 output LED1
    5 reg led_reg
    6 reg [260] time_cnt
    7 parameter SET_TIME_1S27'd50000000
    8 always @ (posedge CLK_50M or negedge RST_N)
    9 begin
    10 if(RST_N)
    11 begin
    12 led_reg<1'b0
    13 end
    14 else if(time_cntSET_TIME_1S)
    15 begin
    16 led_reg<~led_reg
    17 time_cnt<1'b0
    18 end
    19 else time_cnttime_cnt+1'b1
    20 end
    21 assign LED1 led_reg
    22 endmodule
    代码中命名规没语法结构格式排版代码
    揉成团种代码风格相信没会喜欢种代码风格编写代码便编写代码
    阅读起该代码吃力然里代码量较少特
    乱感受种代码恐怖家想象果成百千行代码
    种风格编写然分析想时定会崩溃分析种代码直接重新
    编写方便说完第二种代码风格接第三种代码风格代码 416 示
    44 硬件语法篇 §4
    Zircon OptoElectronic Technology COLtd
    代码 417 第三种风格代码
    1 module Example_Style1
    2 (
    3 输入端口
    4 CLK_50MRST_N
    5 输出端口
    6 LED1
    7 )
    8
    9
    10 外部端口声明
    11
    12 input CLK_50M 时钟端口开发板 50M 晶振
    13 input RST_N 复位端口低电复位
    14 output LED1 应开发板 LED
    15
    16
    17 部端口声明
    18
    19 reg led_reg 定义显示寄存器
    20 reg [260] time_cnt 定义定时寄存器
    21
    22
    23 设置定时器时间 1s计算方法 (1*10^6)us (150)us 50MHz 开发板晶振
    24 parameter SET_TIME_1S 27'd50_000_000
    25
    26
    27 逻辑功实现
    28
    29 always @ (posedge CLK_50M or negedge RST_N)
    30 begin
    31 if(RST_N) 判断复位
    32 begin
    33 led_reg < 1'b0 初始化 led_reg 值
    34 end
    35 else if (time_cnt SET_TIME_1S)判断 1s 时间
    36 begin
    37 led_reg < ~led_reg 果达 1s显示寄存器会取反
    38 time_cnt < 1'b0 果达 1s定时计数器会清零
    39 end
    40 else time_cnt < time_cnt + 1'b1果未 1s定时计数器会继续累加
    41 end
    42
    43 assign LED1 led_reg 显示寄存器值赋值端口 LED1
    §4 Verilog 关键问题解惑 45
    httpwwwfpgags
    44
    45 endmodule
    果学 C 语言读者该代码说会倍感亲切利 C 语言编程思想
    写代码该代码中出该代码命名规做见名知意格式排版非
    常规范代码添加注释种代码风格表面起非常
    缺点说通种代码风格编写出代码抽象没办法出该代码应
    硬件结构仅通种代码风格编写出代码阻塞赋值非阻塞赋值分
    清楚该代码中知道什时候阻塞赋值知道什时候非阻塞赋值
    然算严重严重通种代码风格编写代码
    前软件编程中固思路说没真正学会硬件方式解决问题
    里重点强调:然 Verilog 语言根 C 语言设计 Verilog 硬
    件描述语言 C 语言滴写 C 语言代码编程写 Verilog 代码
    描述事实硬件描述语言名称中出家注意硬件描述语言名称中
    描述两字什描述设计呢?原硬件描述语言确实
    设计电路仅仅描述电路描述词精确反映硬件描述语言质
    写 Verilog 代码时候脑里先想完成具体功应该什样物理电路实现然
    Verilog 语言该电路描述出空写代码存电路物理实
    现Verilog 语言种设计转化文字表达形式已样真正
    做代码屏中电路心中终第四种代码风格代码 418 示
    代码 418 第四种风格代码
    1 module Example_Style
    2 (
    3 输入端口
    4 CLK_50MRST_N
    5 输出端口
    6 LED1
    7 )
    8
    9
    10 外部端口声明
    11
    12 input CLK_50M 时钟端口开发板 50M 晶振
    13 input RST_N 复位端口低电复位
    14 output LED1 应开发板 LED
    15
    16
    17 部端口声明
    18
    19 reg [260] time_cnt 控制 LED 闪烁频率定时计数器
    20 reg [260] time_cnt_n time_cnt 状态
    46 硬件语法篇 §4
    Zircon OptoElectronic Technology COLtd
    21 reg led_reg 控制 LED 亮灭显示寄存器
    22 reg led_reg_n led_reg 状态
    23
    24
    25 设置定时器时间 1s计算方法 (1*10^6)us (150)us 50MHz 开发板晶振
    26 parameter SET_TIME_1S 27'd50_000_000
    27
    28
    29 逻辑功实现
    30
    31 时序电路 time_cnt 寄存器赋值
    32 always @ (posedge CLK_50M or negedge RST_N)
    33 begin
    34 if(RST_N) 判断复位
    35 time_cnt < 27'h0 初始化 time_cnt 值
    36 else
    37 time_cnt < time_cnt_n time_cnt 赋值
    38 end
    39
    40 组合电路实现 1s 定时计数器
    41 always @ (*)
    42 begin
    43 if(time_cnt SET_TIME_1S) 判断 1s 时间
    44 time_cnt_n 27'h0 果达 1s定时计数器会清零
    45 else
    46 time_cnt_n time_cnt + 27'h1 果未 1s定时计数器会继续累加
    47 end
    48
    49
    50
    51 时序电路 led_reg 寄存器赋值
    52 always @ (posedge CLK_50M or negedge RST_N)
    53 begin
    54 if(RST_N) 判断复位
    55 led_reg < 1'b0 初始化 led_reg 值
    56 else
    57 led_reg < led_reg_n led_reg 赋值
    58 end
    59
    60 组合电路判断时间控制 LED 亮灭
    61 always @ (*)
    62 begin
    63 if(time_cnt SET_TIME_1S) 判断 1s 时间
    64 led_reg_n ~led_reg 果达 1s显示寄存器会改变 LED 状态
    §4 Verilog 关键问题解惑 47
    httpwwwfpgags
    65 else
    66 led_reg_n led_reg 果未 1s显示寄存器会保持 LED 原状态
    67 end
    68
    69 assign LED1 led_reg 显示寄存器值赋值端口 LED1
    70
    71 endmodule
    通该代码出该代码遵循组合逻辑电路时序逻辑电路分开编写种风格
    种代码风格清楚知道段代码应硬件结构电路够清楚知道
    时序逻辑电路中非阻塞赋值组合逻辑电路中阻塞赋值种
    风格然说相代码风格说面
    简单介绍整代码第 1 26 行端口声明参数定义第 32 38 行 always
    模块该 always 模块时序电路时带异步复位端口边 D 触发器
    存储定时器 time_cnt 值第 41 47 行样 always 模块该 always
    模块组合逻辑电路判断定时器 time_cnt 没达 1s果达 1s
    time_cnt 清零果没达 1s继续累加第 52 58 行第 32 38
    行非常类似里存储 led_reg 值第 61 67 行第 41 47
    行类似果达 1s led_reg 取反果没达 1s保持
    变介绍完代码面 RTL 视图图 415 示

    图 415 第四种风格 RTL 视图
    该图中该代码风格生成出 RTL 视图说非常符合代码中
    描述该图中 Add0 二选数选择器应代码中第 41 47 行该图中第
    D 触发器 time_cnt 应代码中第 32 38 行该图中 Equal0 应代码中第
    61 67 行该图中第二 D 触发器 led_reg 应代码中第 52 58 行
    相信家已知道代码风格底重重代码风格提高效率避免必
    错误代码风格代码阅读起舒畅希家够养成代码风格




















    Verilog 语法手册






    附 录
    Verilog 语法手册
    附录部分容参考引——夏宇闻 算法设计硬线逻辑实现——实验练
    Verilog 语法手册[M] 北京:高等教育出版社2001
    I Verilog模块
    Verilog 语言中模块层次基单元模块中包括声明语句功描述引现
    存硬件部件模块声明模块调参量务函数
    关键字:module…endmodule
    模块 Verilog 设计中基功块简单模块模块命名端口列表两部分组
    成整模块 module 开头endmodule 结尾模块模块名
    (1) 语法
    1 module 模块名[(端口……)]
    2 模块条款
    3 endmodule
    4
    5 模块条款 {取}
    6 声明
    7 参数定义
    8 连续务
    9 实例引
    10 详细说明块
    11 初始化块
    12 总执行块
    13
    14 声明 {取}
    15 端口
    16 网络
    17 寄存器
    18 参量
    19 事件
    20 务
    21 函数
    (2) 规
     模块 UDP(混合)文件中进行描述(事实模
    块分开两更文件中描述推荐种做法)
     模块关键字 macromodule 定义语法关键字 module 定义模块
    完全样
    52 硬件语法篇 §5


    Zircon OptoElectronic Technology COLtd
     Verilog 编译器编译宏模块时编译般模块时必宏模块实例创
    建层次样仿真速度存储介质开销两方面说宏模块编译更效率
    达目宏模块编译受制实现时某特殊条件限制果遇
    种情况宏模块般模块编译
    (3) 注意
     模块宏摸块关键字 endmodule 作结束标志
     量文件包含模块型设计中样做易源代码维护
    moduleendmodule 间语句行执行
    (4) 综合性问题
     模块综合独立分层块然工具缺省配置规定层次展
    (单层)允许户综合生成网表层次进行控制
     工具支持宏模块综合
    (5) 举例说明
    1 module nand2(fab)
    2
    3 input a
    4 input b
    5 output f
    6
    7 nand (f a b)
    8
    9 endmodule
    II Verilog端口
    模块端口指硬件器件引脚接口模型
    关键字:inputoutputinout
    端口列表 IO 描述 input 输入口描述output 输出口描述inout
    双端口利发送数利接受数处理总线数时般

    (1) 语法
    1 input [Range] Name1Name2……
    2 output [Range] Name1Name2……
    3 inout [Range] Name1Name2……
    4 Range [MSB LSB] {MSB 表示高位LSB 表示底位}
    (2) 规
     端口列表中列出端口必须次序排列端口名称排列两种排列方式
    混合
    §5 附 录 53


    httpwwwfpgags
     端口名称没端口表达式A()表示模块中定义东西相连
    端口
     端口必须端口列表中列出外必须声明该端口输出(output)输入
    (input)双端口(inout)
     端口声明输出输入双端口声明连线(wire)
    寄存器(reg)类型果没声明会隐含认该端口连线(wire)类型位宽
    相应端口致果某端口已声明矢量端口方类型两声明中
    位宽必须致
     输入双端口声明寄存器类型
     输出端口类型声明实型(real)实时型(realtime)
    (3) 注意
     测试模块中定义端口
     模块定义时建议命名端口列表少样定义模块端口家
    解种端口定义形式
    (4) 举例说明
    1 module Test1(abc)
    2
    3 input a
    4 input [70] b
    5 output [70] c
    6
    7 Test2 Test2_Init
    8 (
    9 X (a )
    10 Y (b )
    11 Z (c )
    12 )
    13
    14 endmodule
    III Verilog线网
    Net 结构描述中线路连接(连线总线)建立模型net 值 net 驱动器决
    定驱动器门UDP实例模块者连续赋值语句输出
    关键字:wiretriwortriorwandtriandtri0tri1supply0
    supply1vectoredscalared…
    (1) 语法
    1 NetType [ Expansion] [ Range] [ Delay] NetName
    2 线网三参数1Expansion2Range3Delay参数省略
    54 硬件语法篇 §5


    Zircon OptoElectronic Technology COLtd
    3
    4 NetType {面类型意选择}
    5 wiretriwortriorwandtriandtri0tri1supply0supply1
    6 Expansion {面类型意选择}
    7 vectoredscalared
    8 Range [MSB LSB] {MSB 表示高位LSB 表示底位}
    9 Delay #10 延迟 10仿真
    (2) 规
     supply0 supply1 类型 net 分具逻辑值 0 1定义驱动力(supply
    strength)
     tri0 tri1 类型 nets没驱动时分具逻辑值 0 1定义驱动
    力(pull strength)
     果 net 扩展(Expansion)选项选关键词 vectored允许进行某位
    某位选择允许定义强度PLI 会认该 net 扩展果扩展
    (Expansion)选项选关键词 scalared允许进行某位某位选择
    允许定义强度PLI 会认该 net 扩展关键词参考价值
     结构描述中端口标量连线声明 net 类型外类型 net 变量应
    前必须声明
     信号强度(强弱)属性1supply:驱动2strong:驱动3pull:驱动
    4large:存储5weak:驱动6medium:存储 7small:存储 8highz:高
    阻态
     数字电路中信号信号强度加描述系统遇信号间竞争时需考虑
    组信号状态强度果驱动统线网信号强度输出结果信号强度高
    值果两强度相信号间连接线网会发生竞争结果确定
    值 x
    (3) 注意
     net 未驱动时 tri0 tri1 类型 net 连续赋值影响值强度常强
    度(strength)保持 pull逻辑值保持 0( tri0) 1( tri1)
     IEEE 标准已成事实 Cadence 公司标准中扩展选项保留字 scalared
    vectored 位置 Cadence 标准中保留字位范围(range)选项

     模块块首明确声明 nets缺省类型应该明确加说明
    通清楚说明设计意图提高 Verilog 程序读性维护性
     supply0 supply1 声明电源
    (4) 综合性问题
     net 类型变量综合成线路连接某线路连接优化删
     综合工具支持 net 类型中 wire 型综合 net 类型均支持
    (5) 举例说明
    §5 附 录 55


    httpwwwfpgags
    1 module test(ab)
    2
    3 input a input 默认 wire
    4 input b input 默认 wire
    5
    6 wire [70] b 声明 b wire 类型
    7 wire [70] c 声明 c 部 wire 类型
    8
    9 endmodule
    IV Verilog寄存器
    寄存器存储 initialalwaystask function 块中赋值广泛应行建模中
    关键字:regintegertimerealrealtime…
    (1) 语法
    1 RegisterType [Range] MemoryName [Range]
    2 RegisterType {面类型意选择}
    3 regintegertime
    4 Range [MSB LSB] {MSB 表示高位LSB 表示底位}
    5
    6 real RegisterName
    7 realtime RegisterName
    (2) 规
     寄存器类型变量程赋值语句赋值
     具体实现时整数(integer)类型变量 32 位时间(time)类型变量
    64 位寄存器
     integer time 类型寄存器变量位数相 reg 类型寄存器变量行相
    integer time 型寄存器变量 reg 类型寄存器变量样某位某位操
    作表达式中整数类型值作符号值 regtime 类型值作符
    号值
     存储器类型数组中元素作整体进行读写操作果单独访问数组中
    某元素位必须先元素容复制某位数相寄存器变量中
    进行
    (3) 注意
     然 register 词指硬件寄存器(例触发器)寄存器(register)名
    字里指软件寄存器(变量)Verilog 寄存器常组合逻辑电路锁存器
    触发器接口电路描述综合
     realtime 类型寄存器变量 Verilog 语言新增加变量类型目前没工具支持
    种类型变量
    56 硬件语法篇 §5


    Zircon OptoElectronic Technology COLtd
     符号符号值概念版 Verilog 厂家仿真器时完全
    致位宽 32 位符号数矢量时特注意
     运 reg 类型变量描述寄存器逻辑integer 类型变量循环变量计数real 类
    型变量系统模块time realtime 类型变量测试模块中记录仿真时刻
    (4) 综合性问题
     real time realtime 类型寄存器变量综合
     描述组合逻辑 always 块中寄存器综合成 wire 型果存完整赋值情
    况综合成锁存器描述时序逻辑 always 块中寄存器根块语句容
    综合成连线(wire)者触发器
     运目前综合工具整数综合成 32 位值二进制数表示负数二进制
    补码表示
     根语句存储器数组会综合成触发器连线会综合成 RAM ROM
    器件
    (5) 举例说明
    1 module test(a)
    2
    3 input a
    4 reg a声明 a 外部 reg 类型
    5 reg [70] b声明 b 部 reg 类型
    6
    7 endmodule
    V Verilog参数定义
    参数种常量通常出现 module 部常定义状态机状态数位宽延迟
    等编译时修改参数值常参数调模块中户
    实例化模块时根需配置参数
    关键字:parameter
    (1) 语法
    1 parameter Name1 1 Name2 2……
    2 localparam Name3 3 Name4 4……
    (2) 规
     参数常量仿真期间更改参数值非法
     编译期间 defparam 者包含参数模块引时改写参数值
     localparam 关键字功 parameter 功类似唯层模块中例化时
    修改参数值
    (3) 注意
    §5 附 录 57


    httpwwwfpgags
    参数常数起含义名字
    (4) 综合性问题
    综合工具含参数模块作模板旦读入模板便够参数值次
    该模板进行综合综合工具支持带改动参数模块实例综合
    (5) 举例说明
    1 module adder(abs)
    2
    3 input a
    4 input b
    5 output s
    6
    7 parameter N 8
    8
    9 wire [N10] a
    10 wire [N10] b
    11 reg [N10] s
    12
    13 always @ (*)
    14 begin
    15 s a + b
    16 end
    17
    18 endmodule
    关键字:specparam
    类似 parameter(参数)指定延时块中
    (1) 语法
    1 specparam Name1 1 Name2 2……
    (2) 规
     specify 块中常量表达式数字 specparam 定 义 参 数
    (parameter)定义specparam specify 块(指定延时模块)外
     利 defparam 模块实例引时#改写 specparam 定义延时参
    数值编程语言接口(PLI)修改值
    (3) 注意
     specify 块中 specparam 定义命名延时参数直接数字
     延时参数应命名规样便进行修改果必话
    采 PLI 延时计数进行修改
    (4) 举例说明
    58 硬件语法篇 §5


    Zircon OptoElectronic Technology COLtd
    1 specify
    2 specparam tRise 10tFall 10
    3 endspecify
    关键字:defparam
    编译时重新定义参数值果分层次命名参数该设计层次外方
    重新定义参数
    (1) 语法
    1 defparam Name1 1Name2 2
    (2) 综合问题
    般情况综合
    (3) 注意
    defparam 声明语句该声明语句常布线时延参数反标中现时
    延参数反标般指定模块编程语言接口(PLI)做模块实例引时#号
    参数语法重新定义参数
    VI Verilog块语句
    块语句作条语句合成组条语句样
    关键字:begin…end
    串行语句执行思路序执行般高级编程语言中语句执行方式序执行
    C 语言序执行语句更容易帮助表达设计思想尤描述时序逻
    辑变容易然 FPGA 设计思想行module 中仅支持行语句调
    方便设计者表达思想Verilog 中行语句中字语句体允许序执行
    关键字 beginend 赋予命
    (1) 语法
    1 begin
    2 块声明语句……
    3 语句……
    4 end
    5
    6 块声明语句 {选}
    7 寄存器变量
    8 参数
    9 事件
    (2) 规
     beginend 块必须包含少声明语句 beginend 中间语句序执行
    语句定时控制相前声明语句声明语句执行完毕beginend
    §5 附 录 59


    httpwwwfpgags
    块便结束
     beginend forkjoin 块嵌套互相嵌套果 beginend 块包含局部声
    明必须命名(必须标识)果禁止(disable)某 beginend 块
    禁止 beginend 块必须名字
    (3) 注意
     Verilog LRM 允许 beginend 块仿真时交执行说果 beginend 块包
    含两相邻间没时间控制声明语句时仿真器时刻两
    语句间执行进程部分语句(例 always 块中语句) Verilog
    语言果加约束话便硬件确定应关系原
     甚需局部声明想禁止 beginend 块时该 beginend 块
    加标识命名提高读性处寄存器作局部声明声明意图变
    清楚
    (4) 举例说明
    1 case(……) always @ (posedge clk) if(……)
    2 …… begin …… end begin begin
    3 …… begin …… end …… ……
    4 …… begin …… end …… ……
    5 default…… …… ……
    6 endcase end end
    关键字:fork…join
    恰恰 begin…end 相反fork…join 语句集合块中发
    执行
    (1) 语法
    1 fork
    2 块声明语句……
    3 语句……
    4 join
    5
    6 块声明语句 {选}
    7 寄存器变量
    8 参数
    9 事件
    (2) 规
     forkjoin 块必须少包括条语句fork…join 块里语句发执行
    fork…join 块语句序谓时间控制相块开始时刻
    fork…join 块里语 句执行完毕块执行完毕
     begin…end fork…join 块身嵌套互相嵌套果想某 fork…join 块包
    60 硬件语法篇 §5


    Zircon OptoElectronic Technology COLtd
    含块局部声明语句必须该块命名(该块必须标识符号)果想
    禁止某 fork…join 块运行该块必须已命名
    (3) 综合性问题
    fork 语句综合
    (4) 注意
    fork…join 语句描述发形式行时
    (5) 举例说明
    1 initial
    2 fork
    3 #20 Data 8’hae
    4 #40 Data 8’hxx 句执行
    5 Reset 0 句先执行
    6 #10 Reset 1
    7 join 第 40 时间单位时结束
    VII Verilog较语句
    关键字:if…else
    if 语句判定定条件否满足根判定结果(真假)决定执行出两种
    操作
    (1) 语法
    1 if(表达式)
    2 begin
    3 语句
    4 end
    5 else if(表达式)
    6 begin
    7 语句
    8 end
    9 else
    10 begin
    11 语句
    12 end
    (2) 规
    表达式值非零时认真值 0x z 时认假
    (3) 注意
     果 if else 分支中超条语句需执行必须 beginend forkjoin
    包括
     嵌套 ifelse 语句时 else 分支省略时特注意else 离
    §5 附 录 61


    httpwwwfpgags
    前面 if 相关联Verilog 编译器判源代码中省略 else 分支
     果某条件需先进行测试种情况应选嵌套 ifelse 语句果
    条件优先权致应选 case 语句
    (4) 综合性问题
     if 声明语句中赋值语句通常综合路器时钟 always 块中输入变化
    时输出保持变赋值语句综合透明锁存器时钟
    always 块中综合循环锁存器
     某情况嵌套 if 语句会综合层逻辑 case 语句避免出现种
    情况
    (5) 举例说明
    1 if((a > b) & (a > c)) 果 a 等 b a 等 c
    2 max a 值 a
    3 else if(b > c) 否果 b 等 c
    4 max b 值 b
    5 else 否
    6 max c 值 c
    关键字:casecasexcasez…defaultendcase
    case 语句种分支选择语句if 语句两分支供选择实际问题中常常需
    分支选择Verilog 语言提供 case 语句直接处理分支选择case 语句通常微处
    理器指令译码
    (1) 语法
    1 CaseType(表达式)
    2 表达式 1begin 语句 end
    3 表达式 2begin 语句 end
    4 表达式 3begin 语句 end
    5 表达式 4begin 语句 end
    6 defaultbegin 语句 end
    7 endcase
    8
    9 CaseType {取}
    10 casecasexcasez
    (2) 规
     casex 说会 xz 视关心位 casez 说会 z 视关
    心位
     case 语句中允许 default 项没分支标号表达式 case 表
    达 式值相等时便执行 default 项(标号位号左边表达式逗号隔
    开表达式标号保留字 default面号号)
     果某标号逗号隔开两两表达式中表达式 case
    62 硬件语法篇 §5


    Zircon OptoElectronic Technology COLtd
    表达式值相等时执行该标号操作
     果没标号表达式 case 表达式值相等没 default 声明语句该 case
    声明语句没作
    (3) 注意
     果标号分支中声明语句声明语句必须放 begin…end
    fork…join 块中
     第 case 表达式值相等标号分支执行case 语句标号定
    互斥错误重复相标号时Verilog 编译器会提示出错
     casex casez 声明语句语法保留字 endcase 作结束 endcasex
    endcasez 结束
     casex 声明语句表达式中 x(定值) z(高阻值)值相等casez
    中 z 会仿真结果带混乱
     仿真利进行常常 default 作 case 声明分支控制法
    标号匹配 case 变量
     通常情况 casez casex 更 x 存会导致仿真出现令误
    解混乱结果
     casex casez 声明标号中代 z 较样做较清楚
    关项高阻项
    (4) 综合性问题
     case 声明语句中赋值语句通常综合成路器果变量(寄存器 net 类型)
    作 case 语句标号会综合成优先编码器
     时钟触发 always 块中完整赋值(某输入信号变化输
    出保持变未时赋值)综合成透明锁存器时钟触发 always
    块中完整赋值综合成循环移位寄存器
    (5) 举例说明
    1 module mux41c(csz)
    2
    3 input wire [30] c
    4 input wire [10] s
    5 output reg z
    6
    7 always @ (*)
    8 case(s)
    9 0 z c[0]
    10 1 z c[1]
    11 2 z c[2]
    12 3 z c[3]
    13 default z c[0]
    14 endcase
    §5 附 录 63


    httpwwwfpgags
    15
    16 endmodule
    VIII Verilog循环语句
    Verilog 中循环语句种包括 for 循环while 循环repeat 循环 forever 循环
    等循环语法中 for 循环时候帮助简化代码编写外基
    仿真激励设计
    关键字:foreverdisable
    语句限循环执行
    (1) 语法
    1 forever 语句
    2 forever begin 条语句 end
    (2) 注意
     forever 循环应包括定时控制够身停止循环否循环限进行
     forever 测试模块中描述时钟时常 disable 跳出循环
    (3) 综合性问题
    forever 循环语句常产生周期性波形作仿真测试信号 always 语句
    处独立写程序中必须写 initial 块中
    (4) 举例说明
    1 initial
    2 begin Clocking
    3 Clock 0
    4 forever #10 Clock Clock
    5 end
    6
    7 initial
    8 begin Stimulus
    9
    10 disable Clocking 停止时钟
    11 end
    关键字:repeat
    声明语句重复执行指定次数
    (1) 语法
    1 repeat(表达式) 语句
    2 repeat(表达式) begin 条语句 end
    (2) 规
    64 硬件语法篇 §5


    Zircon OptoElectronic Technology COLtd
    重复执行次数表达式数值决定果该值 0 X Z会重复
    (3) 综合性问题
    部分综合工具综合 repeat 语句该循环中循环分支时钟
    事件@(posedge Clock)中断时综合成电路
    (4) 举例说明
    1 initial
    2 begin
    3 Clock 0
    4 repeat (MaxClockCycles)
    5 begin
    6 #10 Clock 1
    7 #10 Clock 0
    8 end
    9 end
    关键字:while
    控制表达式真( 0)循环语句重复进行
    (1) 语法
    1 while(表达式) 语句
    2
    3 while(表达式)
    4 begin
    5 条语句
    6 end
    (2) 综合性问题
    循环块事件控制(@(posedge Clock))综合
    (3) 举例说明
    1 reg [150] word
    2
    3 while(word)
    4 begin
    5 if(word[0])
    6 time_cnt time_cnt + 1
    7 word word >> 1
    8 end
    关键字:for
    般途循环语句允许条更语句重复执行
    (1) 语法
    §5 附 录 65


    httpwwwfpgags
    1 for(循环变量赋初值循环结束条件循环变量增值)
    2 执行语句
    (2) 规
    for 循环开始执行时循环计数变量已赋初始值次循环执行前(包括第次)
    必须首先检查表达式值果假( 0x z)立刻退出循环次循
    环重复执行迭代次数寄存器重新赋值
    (3) 注意
    位宽 reg 类型变量作循环变量测试存负数值寄存器变量时格外
    注意加减操作换 reg 类型变量作符号数循环表达式
    永远会假导致循环限止进行
    (4) 综合问题
    果循环边界固定综合时该循环语句认重复硬件结构
    (5) 举例说明
    1 integer i
    2
    3 for(i 0 i < 4 i i+1)
    4 begin
    5 a[i] a[i] & b[3i]
    6 end
    描述设计时for 循环般应该进行功描述应该进行结构描述否 for
    循环抽象级较高编译器定够正确出应实现电路时候存
    够应该功电路
    IX Verilog务定义
    务常模块代码分割成干声明语句构成较块便模块代码理解维
    护模块代码位置执行样常见序声明语句块 3002
    关键字:task…endtask
    (1) 语法
    1 task <务名>
    2 <端口数类型声明语句>
    3 <语句 1>
    4 <语句 2>
    5 ……
    6 <语句 n>
    7 endtask
    (2) 规
     务中命名变量参数没务块中声明指模块中声明命名
    66 硬件语法篇 §5


    Zircon OptoElectronic Technology COLtd
    变量参数
     务中 inputoutput inout 数受限制(零)
     务中变量(包括输入双端口(inout))声明寄存器型果没明确
    声明默认寄存器型位宽相应变量匹配
     启动务时相应务输入双端口(inout)变量表达式值存入相应
    变量寄存器中务结束时输入双端口(inout)变量寄存器中值代
    入启动务语句中相应表达式
    (3) 注意
     模块端口定义样务变量务名括号中定义
     务中包括句语句必须 begin…end fork…join 包含成块
     务输入双端口(inout)输出局部寄存器值静态储存说
    次启动务份寄存器拷贝第次启动务未完成便第二
    次启动该务输入双端口(inout)输出局部寄存器值便会覆盖
     启动务运行结束时输出双端口(inout)值代入务中相应寄存器表
    达式果务中输出双端口(inout)赋值时间控制相应寄存器
    定时控制延迟更新
     样输出双端口(inout)寄存器变量非阻塞赋值语句会起作
    务返回时赋值语句未生效
     复杂 RTL 模块通常需 always 块构造建议采 always 块运
    行务方案
     测试块中务产生重复激励序列例存储器数读写(见例)序列
     某务果模块引定义独立模块(包括该务)
    层次命名引
    (4) 综合问题
    包含定时控制语句务综合启动务综合成组合逻辑
    (5) 举例说明
    1 task Counter
    2
    3 input rst_n
    4 inout [30] time_cnt
    5
    6 if(rst_n)
    7 time_cnt 0
    8 else
    9 time_cnt time_cnt + 1
    10
    11 endtask
    §5 附 录 67


    httpwwwfpgags
    X Verilog函数定义
    语句组合起定义新数学逻辑函数函数模块部定义
    通常模块中调根模块层次分级命名函数名模块调
    关键字:function…endfunction
    (1) 语法
    1 function <返回值类型范围> 函数名
    2 端口说明
    3 语句
    4 begin
    5 语句
    6 ……
    7 语句
    8 end
    9 endfunction
    (2) 规
     函数必须少含输入变量输出输入输出双变量
     函数包含时间控制语句(延迟#事件控制@ 等 wait)
     函数通函数名赋值途径返回值(寄存器)
     函数启动务
     函数禁
    (3) 注意
     函数输入变量象模块端口样列函数名括弧里声明输入时
    输入端口列出
     果函数包含条语句语句必须包含 beginend forkjoin 块中
    (4) 综合问题
    函数次调综合独立组合逻辑电路块
    (5) 举例说明
    1 function [70] ReverseBits
    2
    3 input [70] Byte
    4 integer i
    5
    6 begin
    7 for (i 0 i < 8 i i + 1)
    8 ReverseBits[7i] Byte[i]
    9 end
    10
    68 硬件语法篇 §5


    Zircon OptoElectronic Technology COLtd
    11 endfunction
    XI Verilog等语句
    关键字:@#wait
    Verilog 中三种等语句事件等语句直接时间等语句表达式等语句
    (1) 事件等语句
    事件等语句语法:
    1 @ (posedge clk_50m or negedge rst_n)
    always 程序块中必事件等语句外事件等语句位 always
    程序块中时 always 程序块仿真
    (2) 直接时间等语句
    直接时间等语句语法:
    1 #10 语句
    直接时间等语句仿真
    (3) 表达式等语句
    表达式等语句语法:
    1 wait(表达式)
    表达式真时候程序执行仿真
    XII Verilog赋值语句
    关键字:assign
    连续赋值语句针线网变量种赋值语句线网变量般应 FPGA 中段连线
    连线值时会着驱动源变化停变化称连续赋值语句顾名思义
    连续赋值语句肯定种描述组合逻辑语句
    (1) 语法
    1 assign wire_name 表达式
    (2) 规
    连续赋值声明语句前赋值语句左边线网类型变量必须明确声明
    (3) 注意
    连续赋值等程连续赋值语句然相似确保 assign 放正确方
    连续赋值语句必须放 initial always 块外程连续赋值语句放该语句允许放
    方执行( initialalwaystaskfunction 等块部)
    (4) 综合问题
    §5 附 录 69


    httpwwwfpgags
     综合工具处理连续赋值语句中延迟强度综合中忽略请综合工具指定
    定时约束代
     连续赋值语句综合成组合逻辑电路
    (5) 举例说明
    1 module test(absc)
    2
    3 input a
    4 input b
    5 output s
    6 output c
    7
    8 assign s a ^ b
    9 assign c a & b
    10
    11 endmodule
    关键字:initial
    仿真开始执行执行次声明语句执行包含条语句条语句组成

    (1) 语法
    1 initial
    2 begin
    3 语句 1
    4 语句 2
    5 ……
    6 语句 n
    7 end
    (2) 注意
     包含语句 initial 块需 beginend forkjoin 块语句合成块
     仿真测试文件中 initial 语句描述激励
    (3) 综合问题
    initial 语句综合
    (4) 举例说明
    1 initial 仿真
    2 begin
    3 Load 0 Time 0
    4 Enable 0 Time 0
    5 Reset 0 Time 0
    6 #10 Reset 1 Time 10
    70 硬件语法篇 §5


    Zircon OptoElectronic Technology COLtd
    7 #25 Enable 1 Time 35
    8 #100 Load 1 Time 135 end
    9 end
    关键字:alwaysposedegnegedge
    initial 恰恰相反always 程序块会断循环执行initial 程序块负责模
    块初始化功 always 程序块负责模块功描述方法:
    1 always @ (posedge clk_50m or negedge rst_n)
    2 begin
    3 语句
    4 end
    always 三种基类型:1纯组合逻辑 always2纯时序逻辑 always3具异步
    复位步时序逻辑 always面三种基类型分进行介绍:
    (1) 纯组合 always
    纯组合 always 方法:
    1 always @ (a)
    2 begin
    3 a ~a
    4 end
    述例子描述非门结构关纯组合 always 程序块三点需注意:
     纯组合 always 程序块中语句强烈推荐值阻塞赋值符号时序 always 程序块
    中推荐非阻塞赋值符号否会带非常隐患样更区分开阻塞
    赋值非阻塞赋值区
     然字面理解always 变量 a 出现变化情况触发执行
    作聪明例写出:
    1 always @ (posedge a or negedge a)
    2 begin
    3 a ~a
    4 end
    注意时序逻辑 posedge negedge 关键字然代码时间解释述两
    例功相似出现事件关键字编译器会程序块综合时序逻辑世界
    目前没够敏感信号升敏感信号降触发器综合会报错
     括号中变量逗号者关键字 or 分隔开果括号中变量
    确实太Verilog 家提供偷懒方法匹配符号* 时编
    译器会完成括号中元素推断例:
    1 always @ (*)
    (2) 纯时序 always
    §5 附 录 71


    httpwwwfpgags
    纯时序 always 方法:
    1 always @ (posedge clk)
    2 begin
    3 a < b
    4 end
    (3) 具异步复位步时序 always
    具异步复位步时序 always 方法:
    1 always @ (posedge clk_50m or negedge rst_n)
    2 begin
    3 if(rst_n)
    4 n < 8'b0
    5 else
    6 n < m
    7 end
    XIII Verilog输入门
    关键字:andnandnororxorxnor
    逻辑门输出端口输入端口中输出端口第端口
    方法:
    1 and (outin1in2……)
    2 nand (outin1in2……)
    3 nor (outin1in2……)
    4 or (outin1in2……)
    5 xor (outin1in2……)
    6 xnor (outin1in2……)
    真值表:
    72 硬件语法篇 §5


    Zircon OptoElectronic Technology COLtd
    and 0 1 x z
    0 0 0 0 0
    1 0 1 x x
    x 0 x x x
    z 0 x x x
    nand 0 1 x z
    0 1 1 1 1
    1 1 0 x x
    x 1 x x x
    z 1 x x x
    or 0 1 x z
    0 0 1 x x
    1 1 1 1 1
    x x 1 x x
    z x 1 x x
    nor 0 1 x z
    0 1 0 x x
    1 0 0 0 0
    x x 0 x x
    z x 0 x x
    xor 0 1 x z
    0 0 1 x x
    1 1 0 x x
    x x x x x
    z x x x x
    xnor 0 1 x z
    0 1 0 x x
    1 0 1 x x
    x x x x x
    z x x x x
    XIV Verilog输出门
    关键字:bufnot
    逻辑门输入端口输出端口中输入端口端口
    方法:
    1 buf (out1out2in)
    2 not (out1out2in)
    真值表:
    buf 0 1 x z
    out 0 1 x z
    not 0 1 x z
    out 1 0 x x
    XV Verilog三态门
    关键字:bufif1bufif0notif1notif0
    数输出端口数输入端口控制输入端口第端口数
    输出端口第二端口数输入端口第三端口控制输入端口 bufif1 notif1
    控制等 1 时数通控制等 0 时输出高阻态 z bufif0 notif0控制等
    §5 附 录 73


    httpwwwfpgags
    0 时数通控制等 1 时输出高阻态 z方法:
    1 bufif1 (outainbcontrolc)
    2 bufif0 (outainbcontrolc)
    3 notif1 (outainbcontrolc)
    4 notif0 (outainbcontrolc)
    真值表:
    bufif0 0 1 x z
    in0 0 z 0z 0z
    in1 1 z 1z 1z
    inx x z x x
    inz x z x x
    bufif1 0 1 x z
    in0 z 0 0z 0z
    in1 z 1 1z 1z
    inx z x x x
    inz z x x x
    notif0 0 1 x z
    in0 1 z 1z 1z
    in1 0 z 0z 0z
    inx x z x x
    inz x z x x
    notif1 0 1 x z
    in0 z 1 1z 1z
    in1 z 0 0z 0z
    inx z x x x
    inz z x x x
    XVI Verilog拉拉电阻
    关键字:pulluppulldown
    类门设备没输入输出拉电阻输出置 1拉电阻输出置 0方法

    1 pullup (a)
    2 pulldown (a)
    XVII Verilog MOS开关
    关键字:cmospmosnmosrcmosrpmosrnmos
    类门单开关建模数输入流输出通设置合适控制输入关
    闭数流pmos(p 类型 MOS )nmos(n 类型 MOS )rnmos(r 代表电阻) rpmos 开关
    输出输入控制输入方法:
    1 pmos (outadatabcontrolc)
    2 nmos (outadatabcontrolc)
    3 rpmos (outadatabcontrolc)
    4 rnmos (outadatabcontrolc)
    74 硬件语法篇 §5


    Zircon OptoElectronic Technology COLtd
    果 nmos rnmos 开关控制输入 0pmos rpmos 开关控制 1开关关
    闭输出 z果控制 1输入数传输输出 nmos pmos 相 rnmos rpmos
    输入引线输出引线间存高阻抗(电阻)数输入传输输出时 rpmos
    rmos存数信号强度衰减开关真值表:
    pmos
    rpmos 0 1 x z
    in0 0 z 0z 0z
    in1 1 z 1z 1z
    inx x z x x
    inz z z z z
    nmos
    rnmos 0 1 x z
    in0 z 0 0z 0z
    in1 z 1 1z 1z
    inx z x x x
    inz z z z z
    表中某项选项例1z 表明根输入控制信号强度输出 1
    zcmos(mos 求补) rcmos(cmos 高阻态版)开关数输出数输
    入两控制输入方法:
    1 cmos (outadatabcontrolccontrold)
    2 rcmos (outadatabcontrolccontrold)
    cmos(rcmos)开关行带公输入输出 pmos(rpmos) nmos(rnmos)开关组合
    十分相似
    XVIII Verilog双开关
    关键字:tranrtrantranif0rtranif0tranif1rtranif1
    关键字法综合里简单介绍开关双数双流动
    数开关中传播时没延时 4 开关够通设置合适控制信号关闭tran
    rtran 开关关闭tran rtran(tran 高阻态版)开关实例语句语法:
    1 tran (signalasignalb)
    2 rtran (signalasignalb)
    两端口条件双流动 signala signalb反然 双开
    关实例语句语法:
    1 tranif0 (signalasignalbcontrolc)
    2 rtranif0 (signalasignalbcontrolc)
    3 tranif1 (signalasignalbcontrolc)
    4 rtranif1 (signalasignalbcontrolc)
    前两端口双端口数 signala 流 signalb反然第三端口控制信
    号果 tranif0 tranif0controlc 1 tranif1 rtranif1controlc 0禁止双
    数流动 rtranrtranif0 rtranif1信号通开关传输时信号强度减弱
    XIX Verilog户定义原语
    §5 附 录 75


    httpwwwfpgags
    户定义原语英语 User Defined Primitives 直接翻译简称 UDP利 UDP
    户定义设计基逻辑元件功说利 UDP 定义特色
    仿真基逻辑元件模块建立相应原语库样调 Verilog HDL 基逻辑
    元件样方法调原语库中相应元件模块进行仿真 UDP 查表方法
    确定输出仿真器进行仿真时处理速度较般户编写模块块般
    户模块较UDP 更基描述简单真值表表示组合时序逻辑UDP
    模块结构般模块类似 module 改 primitive 关键字开始 endmodule
    改 endprimitive 关键字结束 Verilog 语法中规定 UDP 形式定义必须遵守
    点般模块处面加介绍
    关键字:primitiveendprimitivetableendtable
    (1) 语法
    1 primitive 元件名(输出端口名输入端口名 1输入端口名 2)
    2
    3 output 输出端口名
    4 input 输入端口名 1输入端口名 2
    5 reg 输出端口名
    6
    7 initial
    8 begin
    9 输出端口寄存器时序逻辑部寄存器赋初值(01 x)
    10 end
    11
    12 table
    13 输入 1 输入 2 输入 3 : 输出
    14 逻辑值 逻辑值 逻辑值 逻辑值
    15 逻辑值 逻辑值 逻辑值 逻辑值
    16 逻辑值 逻辑值 逻辑值 逻辑值
    17
    18 endtable
    19
    20 endprimitive
    (2) 注意
     UDP 输出端必须端口说明列表第项
     UDP 输入端允许 10 输入端
     UDP 端口变量必须标量必须 1 位
     UDP 真值表中允许出现 01x 3 种逻辑值高阻值状态时允许出现
     输出端定义寄存器类型变量
     initial 语句时序电路部寄存器赋初值允许赋 01x 3 种逻辑值默认值
    x
    76 硬件语法篇 §5


    Zircon OptoElectronic Technology COLtd
    数字系统设计员说解 UDP 作微电子行业基逻
    辑元器件设计工程师必须深入解 UDP 描述设计基逻辑元件通 EDA 工
    具呈现系统设计工程师
    XX Verilog驱动强度
    关键字:supply0supply1weak0weak1pull0pull1highz0
    highz1strong0strong1largesmallmedium
    逻辑值外net 类型变量定义强度更精确建模Net 强度
    动态 net 驱动器强度开关级仿真时 net 驱动器驱动值互相矛盾时常
    强度(strength)概念描述种逻辑行
    (1) 语法
    1 strength0
    2 strength1
    3 chargeStrength
    4
    5 strength0 {选}
    6 supply0strong0pull0weak0highz0
    7 strength1 {选}
    8 supply1strong1pull1weak1highz1
    9 chargeStrength {选}
    10 largemediumsmall
    (2) 规
     关键词 strength0 strength1 定义 net 驱动器强度中 strength 表示强度
    紧着 0 1 连起分表示输出逻辑值 0 1 时强度
     强 度 声 明 中 选 择 强 度 关 键 字 代 strength
    (highz0highz1) (highz1highz0)两种强度定义允许 pullup (拉)
    pulldown(拉)门强度声明中 highz0 highz1 允许
     默认强度定义 (strong0strong1)述情况外:
     pullup and pulldown 门默认强度分(pull1) (pull0)
     trireg net默认强度 medium
     强度定义 supply0 supply1 Net总提供强度
     仿真期间net 强度 net 驱动强度(具强度值实例连续
    赋值语句)果 net 未驱动会呈现高阻值情况外:
     tri0 tri1 类型 net 分具逻辑值 0 1 pull 度
     trireg 类型 net 保持驱动值
     强度 supply0 supply1 nets 分具逻辑值 0 1提供驱动力
     强度值强弱序 supply(强)次减弱排列 highz(弱)需
    §5 附 录 77


    httpwwwfpgags
    确定 Net 确实逻辑值强度时者 Net 驱动器驱动驱动相互间出现
    突时出现突两强度值强弱序表中相位置会该 Net 真实逻辑
    值起作
     信号强度(强弱)属性1supply:驱动2strong:驱动3pull:驱动
    4large:存储5weak:驱动6medium:存储 7small:存储 8highz:高
    阻态
    (3) 综合性问题
    综合
    XXI Verilog程性连续赋值
    关键字:deassignforcerelease
    连续赋值适线网程赋值适寄存器类赋值方式线网赋值
    寄存器赋值(寄存器位选择部分选择)种赋值方式称程性连续赋
    值属程性赋值非连续赋值出现 always initial 语句中(连续赋值语句
    出现 always initial )连续赋值特性程性连续赋值语句
    中右端表达式中操作数变化会引起赋值语句重新执行程性赋值语句两种类型:
    assigndeassign(赋值重新赋值)forcerelease(强制释放然寄存器赋值
    线网赋值)assign 寄存器赋值deassign 取消前 assign 赋某
    寄存器值说 assign 寄存器赋值值直保存寄存器直遇
    deassign 止 force 语句应寄存器时寄存器前值 force 语句值覆盖
    release 语句应寄存器时寄存器中前值保持变直赋予新值
    (1) 规
     程连续赋值语句执行会指定寄存器(组)强制维持程连续赋值直解
    赋值(deassign)语句执行直程连续赋值语句该寄存器(组)
    赋值
     force(强制)语句改写已程连续赋值语句赋值寄存器类型变量直
    release 语句执行时强制赋值解原程连续赋值该寄存器类型变量作
    重新恢复
    (2) 注意
    连续赋值语句程连续赋值语句相似完全致编写程序时确认
    assign 写正确位置程连续赋值语句写声明语句允许出现位置( initial
    always task function 等部)连续赋值语句必须写 initial always 块外
    (3) 综合问题
    什综合工具程连续赋值语句综合
    (4) 举例说明
    1 always @ (posedge Clock)
    2 begin
    78 硬件语法篇 §5


    Zircon OptoElectronic Technology COLtd
    3 Count Count + 1 受面 always 块控制计时钟数计数器
    4 end
    5
    6 always @ (Reset) 异步复位
    7 begin
    8 if(Reset)
    9 assign Count 0 Reset 高时 Count 0计数
    10 else
    11 deassign Count Reset 低时解 Count 0
    12 end 时钟升重新开始计数
    XXII Verilog指定块延时
    specify 块(指定延时块)描述模块输入输出路径延时定时约束例信
    号建立保持时间指定延时块设计时模块信号传输延时行结构分开
    进行描述
    关键字:specifyendspecify
    (1) 语法
    1 specify
    2 参数定义
    3 设置时序检查选项
    4 设置模块中组合逻辑脚脚时间延迟
    5 设置模块中时序逻辑时钟相关时间延迟
    6 条件延迟语句类似条件生成语句
    7 endspecify
    般说 FPGA 厂商会针根硬件相关原语编写 specify样
    够设计进行时序仿真者时序分析基需设计模块中
    编写 specify里仅模块说明语句进行简单介绍家 specify 概念做


























    版权声明

    (1) 南京锆石光电科技限公司发行合作公司发行包括限产品
    服务全部容拥版权等知识产权受法律保护
    (2) 产品资料容仅供户学
    (3) 未公司书面许单位方式理述产品服务信息
    材料部分进行复制修改抄录产品捆绑销售
    (4) 侵犯公司版权等知识产权公司必法追究法律责

    声明单位:南京锆石光电科技限公司










    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载pdf到电脑,查找使用更方便

    pdf的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享pdf获得香币 ]

    下载pdf

    相关文档

    有关元旦的歌曲:hello新年

    有关元旦的歌曲:hello新年  演唱:刘晶  作词:金彪  作曲:杨洋  编曲:李珂  发行:欧乐文化  哈喽 新年如约来到了身边  开门迎来吉祥的一年  亲朋好友围坐一起贺新年  幸福的生...

    9年前   
    479    0

    组装与维修考试之硬件篇

    组装与维修考试之硬件篇 姓名:                                               分数: 1、      填空题(每空1分,共40空) 1、计算...

    11年前   
    9502    0

    硬件维保方案

    IT设备整体服务方案Version 1.02011年X月 目 录第1章、 概述 41.1、 前言 41.2、 IT服务外包定义及发展现状 51.3、 IT服务外包优势 6第2章、 方案描述 ...

    3年前   
    703    0

    硬件组成更明了

    硬件组成更明了【教学目标】1.知识与技能:(1)认识机箱内的硬件。(2)了解机箱内主要部件的作用。(3)了解电脑系统的组成。(4)了解电脑的基本工作流程。2.过程与方法:(1)通过图片或实物观...

    3年前   
    571    0

    基于FPGA的温度检测系统设计

    XX学院信息工程学院数字系统与Verilog设计报告题 目: 基于FPGA的温度检测系统设计 姓 名: 学 号: ...

    3年前   
    607    0

    基于FPGA的IIR滤波器设计

     基于FPGA的IIR滤波器设计摘 要:数字信号处理在科学和工程技术许多领域中得到广泛的应用,与FIR数字滤...

    3年前   
    540    0

    通过MCU实现Altera-FPGA在线升级

    通过MCU实现Altera FPGA在线升级一.问题背景在实际工程应用中,我们时常会遇到为解决某个老产品的BUG,需要在工程现场更新设备的FPGA代码,或者参加电信测试时需要现场升级设备FPG...

    3年前   
    476    0

    基于FPGA的语音录制与回放系统

    本语音录制与回放系统的基本工作原理是将模拟语音信号通过模数转换器(A/D)转换成数字信号,再通过FPGA(控制器)将数字信号存储到存储器中; 回放时, 由 FPGA控制将数据从存储器中读出, 然...

    5年前   
    1181    0

    硬件设备运维方案

    目 录1 概述 222 服务内容 222.1 服务目标 222.2 信息资产统计服务 232.3 网络、安全系统运维服务 232.4 服务器设备、存储系统运维服务 262.5 数据库系统运维...

    4年前   
    1227    0

    集体配送硬件要求

    集体配送应具备如下功能间:收货验货间、食品库房、洁具间、粗加工间、切配间、烹饪间(包含蒸饭)、二次更衣间、分装间、清洗消毒间。

    5年前   
    1413    0

    高中语文语法知识复习 3篇

    高中语文语法知识复习 3篇  高中语文语法知识复习·1  一、语文知识点  1.小说三要素:A人物 B情节 C环境  2.议论文三要素:A论点 B论据 C论证  3.比喻三要素:A本体 B喻体...

    3年前   
    522    0

    硬件测试工程师的职责

    硬件测试工程师的职责职责:1. 负责医疗设备硬件部件独立测试和质量评价,包括产品需求分析,测试平台搭建/测试工具开发,编写测试规范,测试执行及提交报告等;2. 熟悉和分析设备的子系统/部件软硬...

    2年前   
    463    0

    硬件购买及服务合同

    硬件购买及服务合同  甲方:_________________________  乙方:_________________________  签约地点:____________________...

    9年前   
    596    0

    硬件单板测试模板

    目录目录 21 目的和范围 42 设备 52.1 测试设备 52.2 测试平台 52.3 被测部件 53 测试程序 63.1 黑盒测试 63.1.1 接口电气特性测试 63.1.2 外部电源适...

    1年前   
    452    0

    DSP主控板硬件设计

    DSP主控板硬件设计1 课题来源及研究的目的和意义产品研制、生产、使用过程中,先进的检测技术和检验设备是检测产品性能参数及缩短研制时间的有利保障。因此测试设备是整个产品生命周期内不可或缺的关键...

    12年前   
    399    0

    硬件需求规范模板

    项目名称项目编号:项目编号硬件需求规范(版本号:V1.0)版本记录版本号日期修改章节修改内容及说明编制者VXXXXXXXX 编制: 审核: 批准: 目 录1. 简介 51.1. 系统简介 ...

    4年前   
    843    0

    硬件开发详细流程

    电子电器硬件开发详细流程一、 硬件开发基本任务l 硬件需求分析l 硬件系统设计l 硬件开发及过程控制l 系统联调l 文档归档及验收申请二、硬件开发详细流程Ø 硬件需求分析内容1. 基本配置及其...

    10个月前   
    437    0

    2018年硬件市场调研报告

    硬件市场调研报告  随着科技的发展,计算机硬件价格每一天都在波动,新的产品不断更新换代,生产厂商为了吸引消费群体,不断推出各种优惠活动;许多大学生对计算机各部件功能及整体功能的认知水平还较低,...

    6年前   
    544    0

    硬件展示策划书

    硬件展示策划书  主办单位:it地带  活动背景  xx大学软件学院是纯软件类专业的学院。学院每年招收学生xx余人。出于专业的需要,人手一台电脑也是必然的趋势。由于目前学生对各类电子产品还缺乏...

    9年前   
    392    0

    TSI系统硬件抢修预案

    检修预案编写(DCS系统硬件、TSI系统、ETS系统(包括安全措施、检修工器具、人员组织、备件、抢修工序及质量技术要求)TSI系统硬件检修预案一、 总则1、 为了在TSI系统硬件出现问题的时候...

    2年前   
    359    1
    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创pdf 来获得香币奖励!

    该用户的其他文档