当前位置: 首页 > news >正文

Verilog学习笔记3——数据位宽、阻塞/非阻塞赋值、二进制码、独热码、格雷码比较、编写原则、三态门、

文章目录

  • 前言
  • 一、数据位宽
    • 1、有符号定点数
    • 2、Nbit和Mbit相加或相乘
  • 二、阻塞赋值和非阻塞赋值
  • 三、timescale
  • 四、三态门的设计
  • 五、verilog模块编程原则
  • 六、二进制码、独热码、格雷码比较
    • 1、独热码
    • 2、格雷码
    • 3、二进制码


前言

2023.4.5 清明节


一、数据位宽

N位有符号数:-2^(N-1) ~ 2^(N-1) -1
N位无符号数:0 ~ 2^N-1
如:8bit无符号数范围0-255,有符号数范围-128-127(0占掉了正数)

1、有符号定点数

范围:
最大值:3 + 2^-1 + 2^-2 + 2^-3 + 2^-4
最小值:-4 - (2^-1 + 2^-2 + 2^-3 + 2^-4 +2^-5)

N = 8,3Q5    //总共8位数,整数部分3位,小数部分5位

2、Nbit和Mbit相加或相乘

相加位数:+1
相乘位数:N+M

二、阻塞赋值和非阻塞赋值

组合电路要使用阻塞赋值,时序电路使用非阻塞赋值

阻塞赋值非阻塞赋值
=<=
立刻执行,立刻改变一个周期计算右边的值,下个周期赋值给左边,在过程块结束时才完成赋值操作
执行过程不受其他语句执行的影响不影响其他语句的执行
其他语句在执行后顺序执行并行执行
在串行语句块中,顺序执行;在并行语句块中,同时执行在串行语句块中,执行没有先后之分,各条语句并行执行

三、timescale

  • 时间精度要小于等于时间单位
  • 只能是1、10、100这样的数
  • verilog是没有默认的timescale,没有声明的模块可能会错误的使用前面模块的定义
`timescale 时间单位/时间精度
`timescale 1ns/1ps

四、三态门的设计

三态门:既不是0,也不是1,电阻很大,相当于开路

always@(din or en)beginif(en)dout = din;elsedout = 1'bz;
end//或者assign赋值
assign dout = en ? din : 1'bz;

五、verilog模块编程原则

  • 时序电路建模时,用非阻塞赋值。
  • 锁存器电路建模时,用非阻塞赋值
  • 用always块建立组合逻辑模型时,用阻塞赋值。
  • 在同一个always块中建立时序和组合逻辑电路时,用非阻塞赋值。
  • 在同一个always块中不要既用非阻塞赋值又用阻塞赋值。
  • 不要在一个以上的 always 块中为同一个变量赋值。
  • $strobe系统任务来显示用非阻塞赋值的变量值。
  • 在赋值时不要使用#0延时。

六、二进制码、独热码、格雷码比较

1、独热码

一种使用N位状态寄存器来对N个状态进行编码的方法,每个状态都由它独立的寄存器位,并且在任意时候,其中只有一位有效。

  • 优点:状态比较时仅需要比较一位,从而在一定程度上简化了译码逻辑,节约了组合逻辑资源,速度更快

  • 缺点:需要较多的寄存器资源,且编码效率低,适合用于状态数较少的情况。

2、格雷码

每次只有一位发生变化的二进制编码方法

  • 优点:每次只改变1bit,低功耗,发送亚稳态概率降低
  • 缺点:无权码,不能直接进行计算

3、二进制码

编码简单,可以进行运算,但是翻转较多,容易产生亚稳态

在这里插入图片描述

http://www.lryc.cn/news/58494.html

相关文章:

  • C++ Qt智能指针使用教程
  • 【题解】BZOJ4975 区间翻转
  • 火箭参数相关知识
  • 【JavaEE】死锁是什么?如何避免死锁(保姆级讲解)
  • JS 实现占位符截取字符串内容
  • Prophet学习(四)趋势Changepoints
  • 超表面学习 初步印象
  • 脂肪肝 肾结石 怎么得来的
  • Python 进阶指南(编程轻松进阶):一、处理错误和寻求帮助
  • windows服务器自带IIS搭建网站并发布公网访问【内网穿透】
  • IFPUG功能点度量4:度量事务功能
  • 未来公寓智能化设计平台项目(上)
  • Java8新特性 Steam流
  • Unity 实现大世界地图的技术原理
  • jQuery制作一个简单的打地鼠游戏(超详细讲解)
  • typora和C51开发环境
  • linux echo彩色打印
  • 2023年4月PMP®项目管理专业人士认证招生简章
  • Java每日一练(20230410)
  • 主动配电网故障恢复的重构与孤岛划分统一模型研究【升级版本】(Matlab代码实现)
  • TS2023年面试题汇总~~~~持续更新中!!!!
  • CSS模块的书写以及删除线的作用和来历什么是删除线
  • Libhevc介绍
  • 基于Tensorflow的最基本GAN网络模型
  • 数据质量管理概述
  • C++ const、volatile和mutable关键字详解
  • MySQL实验四:数据更新
  • 商汤科技推出“日日新SenseNova”,大模型体系赋能人工智能新未来
  • 【中创AI】斯坦福人工智能年度报告:AI论文发表量中国世界第一!
  • Java基础(五)面向对象编程(基础)