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

【FPGA】Verilog语言从零到精通

接触fpga一段时间,也能写点跑点吧……试试系统地康康呢~这个需要耐心但是回报巨大的工作。正原子&&小梅哥

15_语法篇:Verilog高级知识点_哔哩哔哩_bilibili

1Verilog基础

Verilog程序框架:模块的结构

类比:c语言的基础单位是函数

一个流水灯实验的example

counter即是内部信号声明

模块的调用

例化中的参数传递问题

在Verilog中,#(.PARAM_NAME(VALUE))是一种参数化实例化(parameterized instantiation)语法,用于在实例化模块时传递参数。具体来说,它用于在实例化某个模块时,覆盖该模块中定义的默认参数值。

假设我们有一个模块Timer,其定义如下:

module Timer #(parameter MAX_NUM = 100) (
    input wire clk,
    input wire reset,
    output reg [7:0] count
);

    always @(posedge clk or posedge reset) begin
        if (reset)
            count <= 0;
        else if (count < MAX_NUM)
            count <= count + 1;
        else
            count <= 0;
    end

endmodule

在这个模块中,MAX_NUM是一个参数,默认值为100。如果我们在实例化这个模块时,希望将MAX_NUM的值改为某个不同的值,例如TIME_SHOW,我们可以使用参数化实例化语法来实现。

module TopModule (
    input wire clk,
    input wire reset,
    output wire [7:0] timer_count
);

    // Parameterized instantiation
    Timer #(.MAX_NUM(TIME_SHOW)) timer_instance (
        .clk(clk),
        .reset(reset),
        .count(timer_count)
    );

endmodule


结构语句

initial

#20:延时20个单位的时间

延时了20个单位后又延时了10个单位又延时了30个单位……

timescale

时间单位是通过timescale指令设置的。在你的Verilog文件中添加适当的timescale指令,可以明确定义时间单位和时间精度,从而确定延时语句(如#20)的具体含义。

`timescale 1ns / 1ps指令设置时间单位为1纳秒,时间精度为1皮秒。

#10表示延时10纳秒。

always

组合逻辑vs时序逻辑

赋值语句:阻塞语句和非阻塞语句

条件语句

if else

case

‘bx:默认32位

状态机

状态机的概念

状态机是Verilog中很常见的一种语法结构。

首先,我们在什么时候需要用状态机捏?一个密码锁的example:

状态机的模型

moore状态机是mealy状态机的一个特例

状态机的设计

八股文。写就有分。

example:推荐独热码

latch:会导致电路毛刺很多

产生latch的原因:1case情况没给完全2if没有对应的else

2ADDA

AD_OTR:指示位,模拟量超出量程了!

3串口通讯发送原理

相关文章:

  • Unity世界坐标下UI始终朝向摄像机
  • LangChain学习之prompt格式化与解析器使用
  • FreeReg运行笔记
  • vim常用使用技巧
  • 多目标应用:NSGA2求解无人机三维路径规划(MATLAB代码)
  • 【C++题解】1074 - 小青蛙回来了
  • CLion配置
  • 在今日头条上写文章:ChatGPT完整使用教程
  • 【qt】项目移植
  • elk:使用filebeat采集日志发送到kafka
  • Java装饰器模式,装饰器模式通常通过创建一个接口和一个或多个实现了该接口的类来开始,然后创建装饰器类,这些类也实现了相同的接口
  • MC联机无法连接到服务器怎么解决
  • 【WRF理论第二期】运行模型的基础知识
  • 路由懒加载
  • VL27 不重叠序列检测
  • angular2 简述
  • ES6核心特性
  • Intervention/image 图片处理扩展包的安装和使用
  • Invalidate和postInvalidate的区别
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • jquery cookie
  • PHP CLI应用的调试原理
  • swift基础之_对象 实例方法 对象方法。
  • VuePress 静态网站生成
  • vue-router的history模式发布配置
  • 产品三维模型在线预览
  • 搞机器学习要哪些技能
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 我建了一个叫Hello World的项目
  • ​iOS安全加固方法及实现
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #微信小程序(布局、渲染层基础知识)
  • (4)事件处理——(7)简单事件(Simple events)
  • (ros//EnvironmentVariables)ros环境变量
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)学习JVM —— 垃圾回收机制
  • (二)正点原子I.MX6ULL u-boot移植
  • (剑指Offer)面试题41:和为s的连续正数序列
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET 服务 ServiceController
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • /etc/skel 目录作用
  • @FeignClient注解,fallback和fallbackFactory
  • @Transactional 详解
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [20180129]bash显示path环境变量.txt
  • [AHOI2009]中国象棋 DP,递推,组合数
  • [Android] Binder 里的 Service 和 Interface 分别是什么
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [C#]winform部署官方yolov10目标检测的onnx模型
  • [CentOs7]图形界面
  • [CQOI 2010]扑克牌