首页 > 其他分享 >FPGA入门学习笔记001

FPGA入门学习笔记001

时间:2023-11-15 18:46:35浏览次数:31  
标签:led 入门 FPGA signal initial 001 延时 testbench 100

1、assign

assign为连续赋值语句,通常用于组合逻辑电路,例如:

assign led_out = (key_in == 0)? a : b;

2、timescale

例如:

`timescale 1ns/1ps

定义了一个仿真精度。

'1ns'为仿真步进,例如设置100的延时'#100',则实际延时100*1ns。

'1ps'为仿真精度,设定延时,可以精确到小数点后两位,例如'#100.001'。

'`'为键盘左上角的按键

3、激励信号与检测信号

在testbench中,激励信号定义为reg型,检测信号定义为wire型。

4、initial块

initial块可以理解为一个初始化块。

在initial的起始位置的语句在0时刻即开始执行,之后如果遇到延时,则延时之后执行接下来的语句。

如果initial中有多条语句,则置于begin…end之间。

例如:

initial begin
    signal_a = 0;signal_b = 0;signal_c = 0;
    #100;	//延时100*1ns
    signal_a = 0;signal_b = 0;signal_c = 1;
    #100;
    signal_a = 0;signal_b = 1;signal_c = 0;
    #100;
    signal_a = 0;signal_b = 1;signal_c = 1;
    #100;
    signal_a = 1;signal_b = 0;signal_c = 0;
    #100;
    signal_a = 1;signal_b = 0;signal_c = 1;
    #100;
    signal_a = 1;signal_b = 1;signal_c = 0;
    #100;
    signal_a = 1;signal_b = 1;signal_c = 1;
    #200;
    $stop;	//使用系统函数stop将系统停止下来
end

5、在testbench中例化待测模块

例如:

led_test led_test0( //设置例化名称为led_test0
    .a(signal_a),
    .b(signal_b),
    .key_in(signal_c),
    .led_out(led)
);

将待测试模块的信号端口与testbench中的端口进行连接

'.'之后紧跟的是待测试模块端口

'()'内的是testbench中的端口

待测试模块定义好后,可以多次在testbench中实例化,例如:

led_test led_test1( //设置例化名称为led_test1
    .a(),
    .b(),
    .key_in(),
    .led_out()
);

标签:led,入门,FPGA,signal,initial,001,延时,testbench,100
From: https://www.cnblogs.com/little55/p/17834498.html

相关文章

  • VSCode插件开发入门
    来源:https://zhuanlan.zhihu.com/p/99198980内容提要VSCode组成结构插件在VSCode中能做什么编写Helloworld了解插件生命周期主要配置和APIsWebView示例VSCode组成结构VSCode是基于Electron构建的,主要由三部分构成:Electron:UIMonacoEditorExt......
  • 作为一个入门级Centos系统管理员 应该掌握哪些命令
    文件和目录管理:ls:列出目录内容。lscd:切换目录。cd/path/to/directorycp:复制文件或目录。cpsourcedestinationmv:移动或重命名文件或目录。mvsourcedestinationrm:删除文件或目录。rmfilemkdir:创建目录。mkdirdirectorytouch:创建空文件或更新文件的访问和修改时间。touc......
  • 超音速亚原子 Java 框架来了,0.0015 秒内启动一个应用,太快了。。
    来源:juejin.cn/post/70233173515630018861、概述SpringBoot框架不用多介绍,Java程序员想必都知道。相对来说熟悉Quarkus的人可能会少一些。Quarkus首页放出的标语:超音速亚原子的Java(SupersonicSubatomicJava)。它是为OpenJDKHotSpot和GraalVM量身定制的KubernetesNative......
  • 前端小程序接口报错error:60001
    昨天发版过程中发现,测试环境好好的接口到生产就报错了,后台直接接收不到,我们请求的接口根本没有进行后台,查看报错原因如下: 通过排除原因:1.其它接口有没问题2.请求域名是否一致3.请求方式是否一致4.是否有做token限制最后查到原因:其余接口没有问题,......
  • vuejs3.0 从入门到精通——项目搭建
    项目搭建一、环境准备软件名称软件版本nodev20.9.0npm10.1.0Windows10专业版22H2vue/cli5.0.8vitev4.5.0二、vite创建项目>npminitvite@latestsaas--templatevue√Selectaframework:»Vue√Selectavariant:»TypeScriptSca......
  • 深入跨域 - 从初识到入门
    前言跨域这两个字就像一块狗皮膏药一样黏在每一个前端开发者身上,无论你在工作上或者面试中无可避免会遇到这个问题。如果在网上搜索跨域问题,会出现许许多多方案,这些方案有好有坏,但是对于阐述跨域的原理和在什么情况下需要用什么方案,缺少系统性的说明。大家在工作中可能因为大佬们......
  • GIT入门
    #GIT笔记安装地址[GitHub下载](https://git-for-windows.github.io/ )[官网下载]( https://git-scm.com/download)##创建库1.初始化库gitinit初始化后产生.git文件2.添加唯一标识  gitconfig--globaluser.name"用户名"  gitconfig--globa......
  • Log4j入门使用(什么是日志? 为什么要使用Log4j)
    什么是Log4j?Log4j是一个Java日志组件,通过日志记录器接口,为程序提供了灵活的配置选项,可以将不同级别的消息输出到不同的目的地,如控制台,文件,数据库等。Log4j可以帮助开发人员更好地调试应用程序,同时也方便了运维人员对应用程序进行监控和故障排查。为什么要使用Log4j?Log4j是一个......
  • C语言程序设计入门教程4
    1define#定义常量和宏(1)#define定义的标识符常量(eg:MAX=100)(2)define定义宏--宏:带参数eg:比较俩数大小用函数方式表示intMax(intx,inty)//定义函数方式{if(x>y) returnx; else returny;}用宏表示//定义MAX(x,y)=(x>y?x:y)#defineMAX(x,y)(x>y?x:y)//定义MA......
  • 数据库操作入门:PyMongo 和 MongoDB 的基本用法
    MongoDBMongoDB是一种流行的NoSQL数据库,它将数据存储在类似JSON的文档中,使数据库非常灵活和可扩展PyMongoPython需要一个MongoDB驱动程序来访问MongoDB数据库。在本教程中,我们将使用MongoDB驱动程序"PyMongo"。建议使用PIP来安装"PyMongo",确保您的Python环境已安装PIP。在命......