分频器

偶分频器

通过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核)相关推荐

  1. FPGA学习笔记_ROM核调用与调试

    FPGA学习笔记 ROM核调用与调试 1. ROM存储器IP核的使用 2. 创建.mif文件 3. In system memory content editor内存查看工具的使用 4. Signal ...

  2. FPGA零基础学习:IP CORE 之 PLL设计

    FPGA零基础学习:IP CORE 之 PLL设计 本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的"傻瓜式"讲解,让电子. ...

  3. FPGA零基础学习:IP CORE 之 FIFO设计

    FPGA零基础学习:IP CORE 之 FIFO设计 本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的"傻瓜式"讲解,让电子 ...

  4. FPGA零基础学习:IP CORE 之 RAM设计

    FPGA零基础学习:IP CORE 之 RAM设计 本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的"傻瓜式"讲解,让电子. ...

  5. ZYNQ之FPGA学习----RAM IP核使用实验

    1 RAM IP核介绍 RAM 的英文全称是 Random Access Memory, 即随机存取存储器, 它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据,其读写速度 ...

  6. FPGA学习---3.IP核使用,Counter IP核

    三 LPM--counter IP核使用 小结:counter(IP核)cin进位输入,clock时钟信号,cout进位输出,q当前计数值 FPGA设计方式 调用IP核 路径放到prj的ip文件夹下 ...

  7. FPGA:zcu102学习笔记(参考自xing见博客)

    1,概述 有一个计划是打算做一个摄像头的驱动与显示. 但是实际上手上只有一个zcu102开发板,没有摄像头,也没有上位机,自己也不会写.所以就将方案阉割成将录制好的视频放在SD卡里面,然后从SD卡里面 ...

  8. FPGA中ISE软件调用IP核导入(.coe)文件并绘制正弦函数

    作为一个FPGA小白,本人在学习FPGA软件的过程中看到了这个例子,网上也有相关的教程,奈何实在写的不清楚,我自己花了挺久才弄懂,为了在以后学习中少走弯路,把自己学习到的做个教程吧,供同样是小白的同学 ...

  9. 征战FPGA之使用clk_wiz的IP核获取任意频率时钟

    一.前言 clk时钟在FPGA开发中具有举足轻重的作用,不管是串口UART,HDMI还是对各种视频编码芯片的驱动等都用到了clk.最近也在学习FPGA的跨时钟域,因此想着先学习一下FPGA的时钟生成. ...

最新文章

  1. javascript的特点
  2. sklearn中的分类决策树
  3. 使用反射将DataTable的数据转成实体类
  4. serverless 构建_使用Serverless,StepFunctions和StackStorm Exchange构建社区注册应用程序-Episode…...
  5. 帝国CMS7.5仿hao123漫画网站模板动态版
  6. Android APK反编译详解
  7. CXF生成本地ws调用代码测试webservice
  8. 服务器不支持mysql_服务器不支持 MySql 数据库的解决方法
  9. tomcat 原理与使用资料
  10. C++ IO 流简介
  11. lamp搭建wordpress后升级安装主题,提示输入ftp账号密码
  12. db2实现两个数相减_DB2 日期相减
  13. WebSocket实现聊天功能
  14. 分分钟穿透手机,实现远程控制
  15. 2020年南京社保减免优惠政策(2-12月汇总)
  16. python解析word中表格_python读取word表格
  17. excel在一个单元格输入内容,在其他单元格同步显示
  18. 上海税前12000的工资,税后能拿到多少?
  19. python5 5的 阵列_Biopython表型微阵列
  20. 短期学习就能月薪过万?IT培训套路揭秘,教育机构宣传是真是假

热门文章

  1. 召唤神龙 javascript 调整地图大小
  2. 计算机入门在线阅读,计算机应用基础教程(Windows 7+Office 2010)
  3. Jlink 使用 RTT 输出调试信息总结
  4. 2018滴滴校招(秋招)内推笔试编程题题解
  5. 邓俊辉算法训练营第三期(带完整课件)
  6. H5微信公众号关闭页面
  7. root 红米note5_怎么开启红米Note 5的ROOT权限
  8. 新手建网站怎样在运营方面渐入佳境
  9. 信息系统项目管理师必背核心考点(四十)干系人管理
  10. 国家加强网络数据安全管控 中信国安鸿联九五助力企业保障数据安全