硬件描述语言Verilog HDL基础 和 NI Multisim 14

文章介绍了VerilogHDL的基础知识,包括模块结构、端口定义、数据类型和变量类型。它详细阐述了门级、逻辑功能和行为描述方式,并提供了组合逻辑电路和状态机的描述示例。此外,还提到了Verilog中敏感事件、过程赋值语句、if-else、case语句和for循环等控制结构在逻辑电路设计中的应用。
摘要由CSDN通过智能技术生成

Verilog HDL

  • Verilog模块的基本结构
    • 每个模块以关键词module开始,以endmodule结束
    • 端口的定义
      • 说明输入(input)和输出(output)
    • 除了endmodule语句外,每个语句后必须有分号
    • 可以用/* --- */和//…..对程序的任何部分做注释
    • 描述方式
      • 结构描述方式(门级描述方式)
      • 数据流描述方式(逻辑功能描述方式)
      • 行为描述方式
    • 模块可以以模块名来调用,但不允许嵌套
    • example
module example(D0, D1, S, Y );
  input D0,D1,S;       //输入信号
  output Y;            //输出信号
  wire Snot, A, B ;    //内部节点信号数据类型

  not U1(Snot, S); 
  and U2(A, D0, Snot);
  and U3(B, D1, S);
  or U4(Y, A, B);
endmodule        

  • 逻辑功能的仿真与测试
    • ModelSim
  • Verilog的基本语法规则
  • 数据类型
    • 线网类型(net type)
      • 输出始终根据输入的变化而更新其值的变量,它一般指的是硬件电路中的各种物理连接。
    • 变量类型(variable type)(寄存器类型)
      • 对应的是具有状态保持作用的电路元件(抽象的数据存储单元),如触发器寄存器
      • 寄存器型变量只能在initial或always内部被赋值
      • reg

        常用的变量类型

        integer

        32位带符号的整数型变量

        real

        64位带符号的实数型变量

        time

        64位无符号的时间变量

  • 运算符及其优先级
    • 优先级:非、与、或
    • 算术运算符
    • 位运算符
    • 逻辑运算符
    • 位拼接运算符
    • 关系运算符
    • 缩位运算符
    • 移位运算符
    • 条件运算符
  • 用VerilogHDL描述组合逻辑电路
    •  组合逻辑电路的行为级描述一般使用always结构和过程赋值语句、条件语句(if-else)、多路分支语句(case-endcase)和for循环语句
    • initial是初始化语句,仅执行一次,主要面向仿真。always是无限循环语句
always@(事件控制表达式(或敏感事件表))
 begin 
  块内局部变量的定义;
  过程赋值语句,被赋值变量必须是reg数据类型;
 end   
  •         敏感事件分为电平敏感事件和边沿触发事件
    • 电平敏感事件(如锁存器)
   always@(sel or a or b) //sel、a、b中任意一个电平发生变化,后面的过程赋值语句将执行一次。
   always@(sel, a, b)     //sel、a、b中任意一个电平发生变化,后面的过程赋值语句将执行一次。
   always@(*)            //对其后语句块中所有输入变量的变化敏感。
    • 边沿敏感事件(如触发器)
always@(posedge CP or negedge CR)
  • 过程赋值语句
    • 阻塞型:多条语句顺序执行
    • 非阻塞型:语句块内部的语句并行执行
  • if语句
if (condition_expr1) true_statement1;
else if (condition_expr2) true_statement2;
else default_statement;
  • case语句
    • 关键词casex和casez表示含有无关项x和高阻z的情况
case (case_expr)
    item_expr1: statement1;
    item_expr2: statement2;
    default: default_statement;    //default语句可以省略
endcase
  • for语句
for (initial_assignment; condition; step_assignment)  statement;
  • 用Verilog HDL描述锁存器和触发器

 彩灯设计

  • 设计要求
    • 控制8只LED灯LED1~LED8,按下述方式显示:
      • 全亮→奇数灯依次灭→偶数灯依次灭→由LED1~LED8依次亮,循环进行,且显示时间间隔0.5S和1S可调。
      • 输入:clk,key   //内部时钟,控制时间间隔
      • 输出:【7:0】LEDS,//控制实验板上的8个LED
  • 设计思路
    • 使用计数器实现计时功能,计数器的值随着时钟信号的上升沿不断累加,当计数器的值达到一定的阈值时,LED的状态会发生变化。
    • LED的状态有四种:全亮、奇数灯灭、偶数灯灭和由LED1~LED8依次亮。使用状态机的方式实现状态的切换,状态机的状态用一个3位的寄存器来表示。
    • 按键用于控制状态切换的时间间隔,当按键为0时,状态切换间隔为0.5秒,当按键为1时,状态切换间隔为1秒。按键的状态检测使用一个简单的时序电路实现。

NI Multisim 14

逻辑函数的化简与变换  Logic convertre-XLC1

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

River Chandler

谢谢,我会更努力学习工作的!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值