![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FPGA学习
文章平均质量分 51
青柠Miya
在执着中痛苦,在痛苦中觉悟,觉悟之后如履平地,觉悟之前如临深渊;
不但要知其然,还要知其所以然!
展开
-
FPGA实现二进制转BCD码
bcd码:以4bit二进制码表示一个十进制码例如,432(d) = 0100-0011-0010(bcd)这里具体的判断方法为:(满5)加3法二进制位宽为W,则BCD位宽只需要(W + (W - 4) / 3+1)位。原创 2023-07-07 14:49:34 · 1702 阅读 · 0 评论 -
verilog设计抢答器【附源码】
2、实验目的1、掌握数码管动态刷新原理2、逻辑练习2.1、实验内容3、实验流程3.1、实验原理数码管:本质上为一组发光二极管按照一定顺序排列而成,其显示原理与LED无异。3.2、系统架构3.3.1、中央控制模块模块框图本模块较为简单,此处不做仿真验证,如有兴趣可自行验证数码管区驱动在之前的基础上有所改动,大家自行理解3.3.3 LED驱动模块设计文件3.3.4、按键消抖该模块在之前有设计过,这里不做过赘述,可参考抖 verilog实现按键消RTL视图具体实现原创 2022-06-25 16:23:15 · 15792 阅读 · 62 评论 -
Verilog 实现数码管显视驱动【附源码】
2、实验目的1、掌握数码管的静态显示与动态刷新2、计数器练习2.1、实验内容3、实验流程3.1、实验原理数码管:本质上为一组发光二极管按照一定顺序排列而成,其显示原理与LED无异。3.2、系统架构3.3.1、数据产生模块模块框图本模块较为简单,此处不做仿真验证,如有兴趣可自行验证仿真验证RTL视图......原创 2022-06-15 17:23:03 · 3201 阅读 · 0 评论 -
基于DE2 115开发板驱动HC_SR04超声波测距模块【附源码】
DE2-E115 FPGA开发板 + Quartus + Modelsim学习并掌握HC_SR04模块的使用使用DE2开发板驱动HC_SR04模块,并将所测得数据显示到开发板上的数码管。超声波原理:HC-SR04超声波测距模块可提供 2cm-400cm的非接触式距离感测功能,测距精度可达高到 3mm;模块包括超声波发射器、接收器与控制电路。图1为HC-SR04外观,其基本工作原理为给予此超声波测距模块触发信号后模块发射超声波,当超声波投射到物体而反射回来时,模块输出回响信号,以触发信号和回响信号间的时间原创 2022-06-14 16:55:16 · 1803 阅读 · 2 评论 -
Verilog 任务和函数的区别
Task & Function1、前言2、函数2.1、函数声明2.2、函数调用2.3、函数示例1、前言在 Verilog 中,可以利用任务(关键字为 task)或函数(关键字为 function),将重复性的行为级设计进行提取,并在多个地方调用,来避免重复代码的多次编写,使代码更加的简洁、易懂。2、函数函数只能在模块中定义,位置任意,并在模块的任何地方引用,作用范围也局限于此模块。函数主要有以下几个特点:不含有任何延迟、时序或时序控制逻辑至少有一个输入变量只有一个返回值,且没有输出原创 2022-05-20 16:42:44 · 1079 阅读 · 0 评论 -
Verilog实现按键消抖
目录1、实验平台2、实验目的2.1、实验要求3、实验流程3.1、实验原理3.2、系统架构3.3、功能模块划分3.4、时序信号图3.5、代码实现3.6、测试文件3.7、上板验证4、总结1、实验平台软件:PC、Quartus Prime 18.1、Modelsim 10.5b硬件:Altera FPGA开发板(EP4CE6E22F17C8)2、实验目的1、通过延时方式实现按键消抖2、状态机demo熟悉3、状态机实现按键消抖(多位宽)2.1、实验要求使用经过消除抖动后的按键信号控制LED呈原创 2022-05-09 22:02:34 · 8275 阅读 · 8 评论 -
Verilog 条件编译
该操作可以在设计文件和测试文件中使用语法规则:// Style #1: Only single `ifdef `ifdef <FLAG> // Statements `endif // Style #2: `ifdef with `else part `ifdef <FLAG> // Statements `else // Statements `endif // Style #3: `ifdef with additional ifdefs .原创 2022-05-07 11:24:43 · 490 阅读 · 0 评论 -
Verilog实现 3-8译码器
FPGA verilog实现3-8译码器原创 2022-04-25 23:51:36 · 14910 阅读 · 2 评论 -
Modelsim仿真——测试文件编写
目录1、基本架构2、task简介3、触发条件控制符 @ 和 wait4、常用仿真控制语句(系统函数)5、文本输入1、基本架构/*================================================*\ Filename ﹕ Author ﹕ Adolph Description ﹕ 仿真设计文件基本架构 Called by ﹕ Revision History ﹕ 2022-4-24 Revision 1.0原创 2022-04-24 10:15:45 · 2976 阅读 · 0 评论 -
Modelsim显示状态机名称
参考自——博客园,咸鱼FPGA大佬的示例设计文件含有状态机时,对应的仿真文件testbench里增加一段参数转ASCII码的代码,即可在Modelsim中显示出状态机名称,如下所示://--------------------------------------------------------------------------//-- 状态机名称查看器//------------------------------------------------------------------原创 2022-04-24 09:22:08 · 933 阅读 · 0 评论 -
Modelsim 仿真 IP 核
平台:Modelsim10.5b,前提为安装了Quartus 任一版本虽然说的是所谓的Modelsim独立仿真,不需要经过Quatyus启动Modelsim软件,但本质上还是使用的Quartus的仿真库。基于之前的 Modelsim 独立仿真,本次在上述内容中更新了脚本文件对IP核仿真的支持,具体内容见下方文件:#/*================================================*\# Filename ﹕ start.do# Author ﹕ Ad原创 2022-04-20 00:13:48 · 3534 阅读 · 4 评论 -
Verilog 实现流水灯
Verilog基础实验,流水灯设计原创 2022-04-19 00:01:35 · 29211 阅读 · 8 评论 -
Quartus Prime 使用Signal Tap在线调试防止信号被优化
一般在做前仿真(即功能仿真)时,不会考虑信号被优化的问题。最近在利用SignalTap II观察信号时遇到某些模块内部的信号被优化掉的情况。在Verilog描述的程序中,通常包括两种类型的信号,即wire型,和reg型。对于不同类型的信号,需要使用不同的综合属性。(1)对于wire型信号,使用/* synthesis keep=“1” */综合属性,例如:wire[7:0] data_in/* synthesis keep="1" */;(2)对于reg型信号,使用/* synthesis .原创 2022-04-14 22:41:46 · 3047 阅读 · 2 评论 -
Verilog `define `timescale `include 浅谈
Verilog 预编译处理前言1、宏定义 `define2、“文件包含” 操作 `include3、时间尺度 `timescale4、条件编译命令`ifdef、`else、`endif前言Verilog HDL语言和C语言一样也提供了编译预处理的功能。“编译预处理”是Verilog HDL编译系统的一个组成部分。Verilog HDL语言允许在程序中使用几种特殊的命令(它们不是一般的语句)。Verilog HDL编译系统通常先对这些特殊的命令进行“预处理”,然后将预处理的结果和源程序一起在进行通常的原创 2022-04-12 23:38:14 · 2886 阅读 · 0 评论 -
Verilog 宏定义 位操作出现的问题
宏定义在C语言程序中的使用司空见惯,好处是可以提高代码的可读性和可移植性。 而在verilog中,也支持这个语法,在很多开源代码中也都能看到 `define 的身影。但是它的使用和C语言不完全一样,很多时候需要非常小心和谨慎。其中最可能让设计者犯错的就是它的位宽问题。`define:用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为:`define 标识符(宏名)字符串(宏内容)如:`define signal string,它的作用是指定用标识符signal来代替...原创 2022-04-12 22:50:24 · 1665 阅读 · 0 评论 -
Quartus 编译 IP报错【已解决】
Quartus Prime 已和谐过,但是编译的时候,报错如下:进入设置(settings)界面,simulation中的仿真工具选择的是第三方仿真软件Modelsim,缘故就出在此。在没有授权时Open Core是不允许生成Netlist的,更改设置:settings 里EDA Tool Settings—>Simulation选择“none”。点击OK重新编译,通过。感谢IT小姐姐大玲一点也不胖的支持...原创 2021-08-09 16:16:57 · 1357 阅读 · 0 评论 -
Verilog代码中负数表示
使用Verilog描述语言时,在编写含有负数判断的描述语言时,需要定义负数的数据类型。一般的包含0以及0以上的正数寄存器只需声明 reg 即可;用法:reg [x:0] a;reg寄存器是最常用的寄存器类型,这种寄存器中只能存放无符号数。如果给reg中存入一个负数,通常会被视为正数!而对于是负数或者是存在负数的寄存器声明要使用 signed;用法:reg signed [x:0] a;示例:正数的寄存器声明:reg [ 4:0] second.原创 2021-07-02 10:26:11 · 14309 阅读 · 3 评论 -
Modelsim独立仿真
一、Modelsim建立工程仿真创建一个工程和工程库; 加载设计文件(包括你编写好的testbench); 编译源文件; 运行仿真,并查看结果; 进行工程调试。1、 开始菜单启动Modelsim2、 File–>New-Project,新建工程3、 输入工程名,并选择工程存放路径(不要有中文和特殊字符,但可以有下滑线 _ ),然后点击ok4、 在工程对应窗口单击鼠标右键添加文件,可以现写,也可以选择现有文件,文件存放的路径同样不能有中文,且单原创 2021-06-02 19:38:03 · 3487 阅读 · 2 评论 -
Quartus Prime 软件 USB-blaster 驱动安装失败【已解决】
一、安装步骤1、将FPGA开发板插入电脑时,未安装驱动的电脑会提示安装usb-Blaster驱动。Windows搜索框打开设备管理器,在“其他设备”下会发现黄色感叹号的“USB-Blaster”的设备驱动。2、Quartus系列软件的安装目录下自带USB-blaster的驱动程序,右键更新驱动,选择驱动目录:(D:\intelFPGA\18.1\quartus\drivers\usb-blaster,文件位置和版本请按照自己安装的路径选择),点击Next开始安装。3、安装成功,重启电脑即可使原创 2021-05-18 20:34:16 · 39909 阅读 · 58 评论 -
Verilog寄存器数组的定义与赋初值
参考 http://blog.sina.com.cn/s/blog_9424755f0101rhrh.html今天碰到了这个问题:Verilog寄存器数组的定义与赋初值结果是:代码右边拼接的矩阵数超过了左边定义的边界 分配了未封装的矩阵,必须要聚合表达式,违反了verilog的语法标准。这种定义方法需要先定义后赋值。...原创 2021-04-16 09:39:09 · 8609 阅读 · 0 评论 -
quartus内置文本编辑器修改缩进
quartus软件内置文本编辑器默认缩进为3,一般的代码编辑器比如:NotePad++、Vscode的缩进默认为4;两个软件一起使用的话,界面显示不同步,有强迫症的我,强行给他改了Tools --> Options --> Text Editor --> Table size设置好后,点击OK,Perfect!...原创 2021-04-15 14:51:59 · 1736 阅读 · 0 评论 -
quartus II 18.1 下载
quartus II 18.1 下载链接 以及解析链接: [link](链接: https://pan.baidu.com/s/1PW-GGd0M4Q5czYSMrPOgyg 提取码: g9mp ).原创 2021-01-05 16:44:44 · 7895 阅读 · 30 评论 -
Moselsim 波形界面自定义 设置为白底-黑线
1、打开Modelsim任意版本【本文使用版本为 10.6 se】2、选择菜单栏的Tools>Edit Prefrences3、选择By Window>Wave Windows4、Wave Windows Color Scheme窗口内的变量设置如下:(1)background 设置为White(2)cursorColor 设置为Gray50(3)gridColor 设置为White(4)selectBackground 设置为Gray50(5)waveBackgroun原创 2022-04-08 11:06:10 · 6195 阅读 · 0 评论 -
FPGA综合RAM时调用存储器资源
最近用verilog写异步fifo时,综合时调用存储单元失败占用大量的寄存器资源,超出芯片实际容量,综合失败试着把复位端口屏蔽.然后再次综合分析能看到quartus调用了存储器资源原创 2022-04-06 18:17:47 · 463 阅读 · 0 评论 -
Quartus Prime Standard 18.1下载 安装流程
注意:安装过程退出杀毒软件,安装路径不能有中文字符,尽量不要放在C盘1、打开网盘,下载.提取码【x34o】2、右键管理员启动QuartusSetup-18.1.0.625-windows.exe3、之后稍等几秒钟,会出现安装界面4、5、6、7、8、后面就一直下一步到结束就行了注意:最后装完了先不要打开软件,如果打开就关闭9、将 解压得到的 Quartus_18.1破解器.exe 软件 拷贝到刚安装好的软件 可执行 程序 路 径下,例如本机为: D: intelFPGA/18.1原创 2022-03-30 10:17:28 · 9781 阅读 · 9 评论 -
Quartus Prime 原理图输入以及仿真流程
Quartus Prime 原理图输入以及仿真流程1、 使用 Quartus Prime(18.1)新建工程,路径不要有中文以及空格!2、 仿真工具选择“None”3、 新建 BSF/BDF 文件4、 选择器件5、选择输入输出端口6、选择连接线,根据需要自行选择,第一个是器件连接线,第二个是总线,第三个是正交管道线,其他的自行探索7、完成自己的设计并保存, 路径直接放到工程所在路径8、创建 VWF 波形文件进来是空白页面添加需要仿真的信号9、设置波形信号,先选中原创 2022-03-10 14:49:45 · 7975 阅读 · 0 评论 -
Verilog 基本语句
Verilog HDL语句包括过程语句、块语句、赋值语句、条件语句、循环语句、编译导向语句等。类别 语句赋值语句 持续赋值语句:assign 过程赋值:=,<=块语句 串行块:begun-end 并行块:fork-join过程语句 initial always条件语句 if-else case,casez,casex循环语句 for repeat .原创 2021-11-09 08:37:41 · 2827 阅读 · 0 评论 -
FPGA基础知识(面试篇)
1、FPGA结构:LE、LUT、LAB、可编程内部互连线、可编程I/O块2、Verilog 开发可编程逻辑电路流程1、RTL文本编辑2、功能仿真3、综合分析4、适配(布局布线)5、时序仿真3、亚稳态:概念:当信号在无关或异步时钟域中的电路之间传输时,亚稳态是一种可能导致数字设备(包括FPGA)中的系统故障的现象。产生:在FPGA系统中,如果数据传输中不满足触发器的Tsu和Th,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足,解决:多级寄存器原创 2021-01-18 22:55:17 · 16965 阅读 · 20 评论 -
Modelsim查看模拟波形信号
1、选中希望以模拟波形显示的信号,右击选择format—>Analog(automatic)2、如果你的数据是用有符号数表示一个完整的波形的,那么可能显示出来的波形样子是下面的样子,不过不要紧,这是因为modelsim默认是按照有16进制数据解析波形数据的缘故,我们可以再进行一次设置修改。3、选中希望显示波形的信号,右击,选择Radix—>Decimal。4、然后就好了注:如果用户希望将波形恢复到原始的数据显示状态(仿真运行后的默认状态),只需要在format中选择Literal原创 2021-10-08 14:13:32 · 8059 阅读 · 5 评论 -
Signal Tap Logic Analyzer查看模拟信号波形
原创 2021-09-30 14:45:57 · 1131 阅读 · 0 评论 -
Quartus Prime 工程打包qar文件
1、首先打开一个编译成功的工程2、依次点击 菜单栏project ——> Archive project3、弹出下图中的窗口,设置压缩包名,默认存放路径在quartus工程同级目录下4、点击Archive,开始压缩5、压缩完成后,可以看到新生成了两个文件,qar格式的即是我们需要的压缩包文件,.qarlog则是一个说明文件,记录了qar文件的内容,比如文件建立时间,包含的具体文件名6、然后双击qar文件,会自动启动 Quartus prime 软件,然后选择解压缩的工程原创 2021-08-20 14:41:17 · 3934 阅读 · 0 评论 -
BCD编码 & 格雷码(学习记录)
1、BCD编码用**4**位二进制数来表示**1**位十进制数(中的0~9这10个数码)BCD码也称二进码十进数,BCD码可分为有权码和无权码两类。其中,常见的有权BCD码有8421码、2421码、5421码,无权BCD码有余3码、余3循环码、格雷码。8421BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。5421BCD码和2421BCD码同为有权码,它们从高位到低位的权值分别为5、4、2、1和2、4、2、1。余3码是由8421码加3原创 2021-08-19 19:20:33 · 6056 阅读 · 12 评论