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

10.25verilog复习,代码规范复盘,触发器复习

verliog复习

1.模块的输入输出(reg与wire)

输入是线性,wire,

输出较复杂需要之前的状态,不仅仅是由当下输入来的信号的与或非组合而成的,需要保存之前状态的,输出类型是reg。

比如计数器,需要在之前计数的基础上再加1,所以是reg型,但输入是wire

wire就是起到一个信号传递的作用,它不保存信号

而reg会在一定条件下保存信号

即就是用wire去接收信号,处理信号,转化信号用reg(时序逻辑,与之前状态有关,需要存储)

一些简单的信号合并(通过与非门就可以实现的组合逻辑)可以直接用wire,实际上组合逻辑也是模块,只不过很简单,信号进去后就直接出来,没有存储

2.assign与always

reg型就用always,wire就用assign

reg就用<=,wire就用=

3.阻塞与非阻塞赋值

时序逻辑中使用非阻塞赋值,组合逻辑中使用阻塞赋值

 

关于位宽 

一个信号的位宽有两种理解

位宽与信号为wire或reg无关,wire与reg只是反映怎么处理信号,与信号本身无关

信号本身特点之一为位宽,wire可以有位宽,reg也可以有位宽,与是否是wire或reg无关

1.每位有实际意义,大小无意义

一个是这个信号代表的是一组信号,每一位都代表一个具体开关(或类似的)的01取值

比如用一组16位宽的信号输出去描述16个led灯的亮灭,就是只用了一个信号,其位宽为16

其在管脚文件下,每个位下的信号都有其实际意义,比如开关、亮灭

2.大小有实际意义,每位无意义

第二就是说是描述的是一个信号,就是这一个多位宽信号只有一个实际意义,其每位单拎出来没有任何意义,纯粹是因为这个要记录的数太大,01表示不了,所以用多位宽、借助多位去记录这一个比较大的数

其在管脚文件下每位无实际意义,但可通过Led去反映每位的一个实际情况

十进制举例理解

对第一种情况而言就比如身份证,并不是用来计数的,而是由好多十进制数组合在一起,组成一个数,这个数就是身份证号,其实际大小并无意义,有意义的是其中的每位及位之间的组合,再比如生日之类的,以及状态压缩之类的,就是用一个数,通过这个数的每一位,及位之间的组合去记录、反映一些事情

对第二种就是十进制运算,加减法,实际大小有意义,但每一位并无意义

代码规范与复盘、理解

1.模块间信号调用

板块之间的信号调用,用wire去传递

2.输出的reg信号

hzone作为线去传递信号

寄存器只是在板块内进行处理时所用的元件,板块出来后都是wire,都是线

板块进出都是wire,都是线,只不过reg在板块内发挥为寄存器,要借助寄存器,但是输出时,出了板块,处理完后,就是wire型

即pcclok输出信号的几个reg,其reg声明只是在板块内起作用,表示这个板块内部是时序逻辑,需要用到之前的状态,信号的赋值要用always与<=,但其输出后都是wire,

即就是用wire去接收信号,处理信号,转化信号用reg(时序逻辑,与之前状态有关,需要存储)

一些简单的信号合并(通过与非门就可以实现的组合逻辑)可以直接用wire,实际上组合逻辑也是模块,只不过很简单,信号进去后就直接出来,没有存储

3.if里的begin,end

verliog始终要记得begin与end,写了begin就先写end再写里面内容 

4.reg型一律用<=

5.多位宽信号的触发沿

触发器

 

 

module DFF(input D,input CLK,    //输入信号output Q   //输出信号);always@(posedge clk) // 时序逻辑beginQ <= D;  //非阻塞赋值end endmodule

 

相关文章:

  • Day 4 登录页及路由 (二) -- Vue状态管理
  • 边缘计算技术的崭新篇章:赋能未来智能系统
  • 在Spring boot中 使用JWT和过滤器实现登录认证
  • 【年终特惠】全流程HEC-RAS 1D/2D水动力与水环境模拟技术案例实践及拓展应用
  • 9.Python3-注释
  • 20年经典传承 | 性能圣典!火焰图发明者Brendan Gregg“神作”
  • Linux cp命令:复制文件和目录
  • 【git】git使用教程
  • [架构之路-245/创业之路-76]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 企业资源管理计划ERP
  • 第16章_变量、流程控制与游标
  • CCS3列表和超链接样式
  • jenkins工具系列 —— 删除Jenkins JOB后清理workspace
  • SurfaceFliger与Vsync信号如何建立链接?
  • Docker 部署spring-boot项目(超详细 包括Docker详解、Docker常用指令整理等)
  • 十月听书笔记
  • Android 控件背景颜色处理
  • css布局,左右固定中间自适应实现
  • docker-consul
  • es的写入过程
  • Flex布局到底解决了什么问题
  • Python学习笔记 字符串拼接
  • React as a UI Runtime(五、列表)
  • Terraform入门 - 1. 安装Terraform
  • Vultr 教程目录
  • 安装python包到指定虚拟环境
  • 程序员该如何有效的找工作?
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 如何学习JavaEE,项目又该如何做?
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 线性表及其算法(java实现)
  • 协程
  • 学习HTTP相关知识笔记
  • 字符串匹配基础上
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #Linux(帮助手册)
  • #传输# #传输数据判断#
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (二)Eureka服务搭建,服务注册,服务发现
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转载)利用webkit抓取动态网页和链接
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .Net Web窗口页属性
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • [CSS3备忘] transform animation 等
  • [EFI]Atermiter X99 Turbo D4 E5-2630v3电脑 Hackintosh 黑苹果efi引导文件
  • [HeMIM]Cl,[AeMIM]Br,[CeEIM]Cl,([HO-PECH-MIM]Cl,[HOOC-PECH-MIM]Cl改性酚醛树脂
  • [hive] posexplode函数
  • [IE编程] WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口
  • [Jquery] 实现温度计动画效果
  • [LeetCode]—Longest Palindromic Substring 最长回文子串
  • [MYSQL数据库]- 索引
  • [Oh My C++ Diary]Main函数参数argc,argv如何传入