野火FPGA征途Pro学习笔记(IP核)
分频器
偶分频器
通过always语句,对系统时钟进型分频,例如4分频:对系统时钟进行计数四次,产生一个高电平的flag信号。
在后级模块中使用时,采用 系统时钟&&flag==1 的判断方法。
这样的好处是在高速系统中,分频后的时钟仍然是挂靠在板子时钟树上的,能够很好的确保时钟的统一性,而直接进行分频可能会在高速系统中产生一定的误差。
奇分频器
通过always语句,做一个上升沿的分频,与一个下降沿的分频,将分频后的结果取与运算。
例如5分频:先做一个上升沿触发的5分频,三个周期低电平,两个周期高电平。
在做一个下降沿触发的5分频,三个周期低电平,两个周期高电平。
最后将两个分频后的结果取与运算,就是常规的5分频。
取与运算后
但在高速系统中,仍采用flag信号的方法进行分频。
PWM
首先PWM波形具有频率 、占空比等参数,占空比决定了PWM波形的等价波数值,而频率这一参数对于宏观数值的影响不大,例如50MHz的50%波与50Hz的50%波,有效值是等价的。
对于无源蜂鸣器来说,占空比这一参数影响发出声音的大小,频率影响发出的音调。
对于呼吸灯来说,占空比是从小到大、从大到小的,具有一个变化的过程,在FPGA里,通常使用一个计数器表示占空比,且往往这个计数器的计数周期是频率计数器的计数间隔,因此频率影响占空比变化的圆润。
相同强度的变化。频率越高越圆润。
无源蜂鸣器
音调和频率关系
层次化设计
需要设计的模块由多个小模块组成时,需要先构造这些小模块并仿真,而在一个工程文件中,只对小模块编译会产生报错,原因是没有检测到与工程名称一样的顶层模块,下面是解决方法:
一:重新编写一个顶层模块,将子功能模块实例化在顶层模块中,对顶层模块进行编译,进而对子功能模块进行编译。
二:软件设置,将子模块强制设置为顶层模块。
操作时右键子模块
二进制码转8421BCD码
先补零,零的个数 = 二进制对应的十进制位数乘四(对应的十进制数若用BCD码表示,则需要十进制位数乘4个位宽)
之后向左移位,一次移一位,总移位次数 = 二进制数位宽
每次移位后进行判断,每一位BCD码是否>4,若>4,则在该位上加3,即+0011。
PLL IP核
可以对输入到FPGA的时钟信号进行任意分频、倍频、相位调整、占空比调整,从而输出一个期望时钟。
FD:鉴频;
PD:鉴相;
LF:环路滤波器;
VCO:压控振荡器;根据电压不同输出不同频率
PLL的倍频
PLL的分频
IP核配置
配置时,这里不要勾选
完成配置的最后一步
左侧示意图中输出信号locked信号为标志信号,高点平有效,有效时代表输出时钟可用。
调用IP后需要对IP重新设置时
IP核文件被删除时如何重新添加到工程
add file后,选择IP核文件夹中的.qip文件
从其他工程中复制IP核
第一种方法
从其他工程的文件夹中直接复制“ip_core”文件夹,之后在新工程中添加.qip文件。
第二种方法
插件管理器中选择第三项
点击next后,上侧为要复制的IP核位置,下侧为IP核复制后的存放位置。
ROM IP核
FPGA中没有非易失性存储器,即ROM这种长期存储的存储器。
RAM、ROM两种IP核实际都是利用FPGA中RAM资源,不过在ROM IP核中,会提前生成数据文件,在每次上电后都会提前加载这个数据文件,使得FPGA的RAM变得像是非易失性存储器,即ROM IP核的实现。
生成的文件类型有:.hex、.mif两种。
在quartus软件中,点击FILE→new就可以生成以上两种文件。
手动修改数据文件内容
这里勾选的为重复赋值,在对话框中输入“1,2,3,4”就会重复填入1234.
下面未勾选的是递增赋值,首先赋值初始值,再选择递增还是递减和大小。
数据文件命名格式:rom_位宽x数据个数
单端口ROM IP核配置
文件保存在数据文件夹中,与数据文件夹放在一起,命名与数据文件一样格式。
下一步
下一步
之后添加mif文件,首先点击browse。
双端口ROM IP核配置
默认数据量要进行修改,修改为256个8bit字节的数据。
第二个方框为输出位宽,这里默认为8位宽。
与单端口相同步骤添加mif文件
注意
这里的含义为:使用modelsim等其他文件进行仿真时,需要添加的仿真库。
RAM IP 核
单端口RAM IP 核配置
第一步,与ROM IP配置一样
第二步
第三步,配置写入数据时所读数据是新数据还是旧数据。
第四步,配置是否有初始文件,有则添加.hex/.mif文件。
之后的步骤与之前的IP核配置一样。
双端口RAM IP核配置
双端口简单RAM IP 核配置
勾选第一项
下一步
下一步
下一步
之后的步骤与之前一样
RAM IP 真正双端口配置
第一步,选择真正双端口RAM IP。
下一步
下一步
后面步骤均默认初始化。
FIFO IP 核
FIFO是一种数据缓冲器,用来实现数据先入先出的读写方式。
FIFO存储器主要是作为缓存,应用在同步时钟系统和异步时钟系统中,在很多的设计中都会使用;如:
多比特数据做跨时钟域处理、前后带宽不同步等都用到了FIFO。
用法:多比特跨时钟域处理,通过A时钟的频率进入FIFO,再通过B时钟的频率读出数据。
用法:带宽不同步
FIFO模块的介绍
同步FIFO,称为SCFIFO;异步FIFO,称为DCFIFO。差别在于读写是否共用时钟。
模块中,full表示写入数据已满;empty表示已经读完数据;usedw[7:0]表述FIFO已经存储的数据个数;eccstatus为校验位。
FIFO IP 的配置
首先
其次,选择读写同步还是异步
配置输出端口
各输出信号的意义
下一步
下一步
后面步骤与之前的IP核配置一样。
异步FIFO
下一步
之后为输出管脚的选择
之后是FIFO的模式选择
保护电路,勾选表示使用,不勾选表示不实用。
后面的配置与以往的IP核配置一样。
FIFO 应用的注意项
异步FIFO,应用于多比特跨时钟域处理操作的过程中,可以看出首先写入的数据为8位宽的00、01、02、03
之后在读取的过程中为16位宽的数据
这里需要注意拼接次序:先写入的数据处于多比特数据的低位端。
传入读取fifo信号(fifo_en)后,读出的数据(dout_data)是滞后使能信号一拍的。
困惑
rom ip核中针对rom_ctrl模块的仿真中,为何key1_en信号只滞后于key1半个时钟周期?
野火FPGA征途Pro学习笔记(IP核)相关推荐
- FPGA学习笔记_ROM核调用与调试
FPGA学习笔记 ROM核调用与调试 1. ROM存储器IP核的使用 2. 创建.mif文件 3. In system memory content editor内存查看工具的使用 4. Signal ...
- FPGA零基础学习:IP CORE 之 PLL设计
FPGA零基础学习:IP CORE 之 PLL设计 本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的"傻瓜式"讲解,让电子. ...
- FPGA零基础学习:IP CORE 之 FIFO设计
FPGA零基础学习:IP CORE 之 FIFO设计 本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的"傻瓜式"讲解,让电子 ...
- FPGA零基础学习:IP CORE 之 RAM设计
FPGA零基础学习:IP CORE 之 RAM设计 本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的"傻瓜式"讲解,让电子. ...
- ZYNQ之FPGA学习----RAM IP核使用实验
1 RAM IP核介绍 RAM 的英文全称是 Random Access Memory, 即随机存取存储器, 它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据,其读写速度 ...
- FPGA学习---3.IP核使用,Counter IP核
三 LPM--counter IP核使用 小结:counter(IP核)cin进位输入,clock时钟信号,cout进位输出,q当前计数值 FPGA设计方式 调用IP核 路径放到prj的ip文件夹下 ...
- FPGA:zcu102学习笔记(参考自xing见博客)
1,概述 有一个计划是打算做一个摄像头的驱动与显示. 但是实际上手上只有一个zcu102开发板,没有摄像头,也没有上位机,自己也不会写.所以就将方案阉割成将录制好的视频放在SD卡里面,然后从SD卡里面 ...
- FPGA中ISE软件调用IP核导入(.coe)文件并绘制正弦函数
作为一个FPGA小白,本人在学习FPGA软件的过程中看到了这个例子,网上也有相关的教程,奈何实在写的不清楚,我自己花了挺久才弄懂,为了在以后学习中少走弯路,把自己学习到的做个教程吧,供同样是小白的同学 ...
- 征战FPGA之使用clk_wiz的IP核获取任意频率时钟
一.前言 clk时钟在FPGA开发中具有举足轻重的作用,不管是串口UART,HDMI还是对各种视频编码芯片的驱动等都用到了clk.最近也在学习FPGA的跨时钟域,因此想着先学习一下FPGA的时钟生成. ...
最新文章
- javascript的特点
- sklearn中的分类决策树
- 使用反射将DataTable的数据转成实体类
- serverless 构建_使用Serverless,StepFunctions和StackStorm Exchange构建社区注册应用程序-Episode…...
- 帝国CMS7.5仿hao123漫画网站模板动态版
- Android APK反编译详解
- CXF生成本地ws调用代码测试webservice
- 服务器不支持mysql_服务器不支持 MySql 数据库的解决方法
- tomcat 原理与使用资料
- C++ IO 流简介
- lamp搭建wordpress后升级安装主题,提示输入ftp账号密码
- db2实现两个数相减_DB2 日期相减
- WebSocket实现聊天功能
- 分分钟穿透手机,实现远程控制
- 2020年南京社保减免优惠政策(2-12月汇总)
- python解析word中表格_python读取word表格
- excel在一个单元格输入内容,在其他单元格同步显示
- 上海税前12000的工资,税后能拿到多少?
- python5 5的 阵列_Biopython表型微阵列
- 短期学习就能月薪过万?IT培训套路揭秘,教育机构宣传是真是假