FPGA设计
为中国IC之崛起而读书
学习、记录IC笔记
展开
-
Xilinx 原语的具体实现方式大揭秘
今天发现了一个秘密,不知称为秘密是否恰当。之前使用Xilinx的原语都是直接调用的,不知到其具体的实现方式,使用的时候就感觉莫名其妙的。今天突然发现只要是原语都可以在Vivado的安装目录下找到其对应的.v文件。如果你Vivado的安装在C盘,则这个路径就是C:\Xilinx\Vivado\2015.2\data\verilog\src\unisims赶紧去看看吧...原创 2020-03-12 14:17:02 · 1168 阅读 · 0 评论 -
ZYNQ SOC 入门基础(三)EMIO 实验
1.1 EMIO 和MIO的对比介绍在ZYNQ SOC 入门基础(二)MIO 实验中讲解了MIO的使用,本节就来讲一下EMIO的使用。在实上一章中对ZYNQ的GPIO做了简单的介绍,ZYNQ的GPIO有(multiuse I/O)MIO和(extendable multiuse I/O) EMIO.MIO分配在Bank0和Bank1直接与PS相连,EMIO分配在Bank2和Bank3与...原创 2018-10-27 21:13:10 · 1302 阅读 · 0 评论 -
Xilinx (mig控制器) DDR 时钟核带宽详解
原创 2018-11-09 19:29:26 · 4420 阅读 · 0 评论 -
FPGA——复位设计
复位设计一、异步复位与同步复位 FPGA设计中常见的复位方式即异步复位与同步复位。在没有关注亚稳态之前,很多人也是多也是对这个不太在意,只有在遇到了亚稳态的危害之后才会关注异步复位和同步复位的区别。在没有关注这个问题之前,相信很多人都是用的异步复位,所谓异步复位,指的是复位信号和系统时钟信号的触发可以在任何时刻,二者相互独立。1、异步复位实例下面给出异步复位的一段...原创 2018-11-04 22:02:51 · 1339 阅读 · 0 评论 -
PLL 配置后的复位设计
很多FPGA设计中都会涉及到多个时钟,使用器件内部的PLL或者DLL会使得多个时钟的管理变得更加容易。但是当多个时钟都是用PLL/DLL产生时,他们的系统复位信号如何设计才更加稳定呢? 在上一章《FPGA——复位设计》的内容里提出了异步复位、同步释放的方法,那么在系统复位后、PLL时钟输出前,即系统的工作时钟不确定的情况下,应该怎么考虑这个复位问题呢? ...原创 2018-11-04 22:56:00 · 2250 阅读 · 1 评论 -
FPGA——乒乓操作
乒乓操作是一个主要用于数据流控制的处理技巧,典型的乒乓操作如下图所示。 外部输入数据流通过“输入数据选择控制”模块送入两个数据缓冲区中,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口RAM(Dual RAM)、SRAM、SDRAM、FIFO等。 在第1个数据缓冲周期,将输入的数据流缓存到“数据缓冲1”模块。在第2个缓冲周期,“输入数据选择控制”模块将输...原创 2018-11-05 00:37:26 · 5756 阅读 · 0 评论 -
Xilinx SRL16E 使用详解
在做FPGA的开发过程中经常会使用到移位寄存器,一般我们使用移位寄存器的目的都是为了将某个信号进行打拍,使得时序符合我们的需求。最常见的一种打拍方法就是在process过程语句中对信号进行移位(在verilog中是在always过程中进行移位)。但是这里我给大家介绍一下SRL6E,这个是Xilinx提供的一个原语,顾名思义,这是一个可以最大实现16位移位寄存的移位寄存器。 ...原创 2018-12-10 20:45:44 · 6205 阅读 · 4 评论 -
Verilog HDL仿真激励的产生
转载地址:https://blog.csdn.net/formerman/article/details/4548895 一、变量初始化变量初始化的基本原则为:可综合代码中完成内部变量的初始化,Testbench中完成可综合代码所需的各类接口信号的初始化。初始化的方法有两种:一种是通过initial语句块...转载 2018-12-10 21:02:33 · 3914 阅读 · 0 评论 -
异步双口BRAM仿真
根据上图可知B口读出数据会延迟两个周期,这是需要注意的地方。因此在给读使能的时候要多给一个周期,否则会少读出一个数据。如上图,enb_wire在地址为0 的时候给出,然后在地址为9的时候给了两个周期的使能。然后再看输出,第一个数据在给出地址以后的两个周期才出数据。如果说使能在地址为9的时候只给出一个周期的使能,那么就只能得到9个数据。...原创 2019-06-03 11:30:17 · 973 阅读 · 1 评论 -
ZYNQ SOC 入门基础(二)MIO 实验
1.1 GPIO简介ZYNQ7000 系列芯片有54个MIO(multiuse I/O),它们分配在GPIO的Bank0和NBank1 隶属于PS的部分,这些IO与PS直接相连。不需要添加引脚约束,MIO信号对PL部分是透明的,不可见。所以对MIO的操作可以看是对纯PS的操作。GPIO的控制和状态寄存器的基地址为:0xE000_A000,在SDK下对软件操作底层都是对应于内存地址空间的操作...原创 2018-10-26 17:00:25 · 2638 阅读 · 0 评论 -
ZYNQ 串口无法打印出信息
排除可能的原因:1、硬件原因串口线是否连上、开发板是否上电、2、软件原因波特率是否正确设置、驱动程序是否能正确运行 我遇到的问题:驱动程序的问题:如下图,本来以为驱动已经正确运行了,但是细心的看一下,CP2104 USB to UART Bridge COntroller 前面有一个感叹号,就是驱动程序没有正确运行。...原创 2018-10-29 14:54:15 · 7209 阅读 · 7 评论 -
ZYNQ SOC 入门基础(一)Hello World 实验
ZYNQ是一款SOC芯片,其最突出的功能就是其内部包含了一个双核的Cortex_A9内核。从本节开始,进行ZYNQ的SOC学习。1.1 最小系统分析下面这张图展示了我们需要构建的最小系统。并且本节的嵌入式实验会基于这个最小系统进行添加外设。 本实验中将只会使用到PS部分资源,包括ARM Cortex—A9、DDR3内存、一个UART串口。这就是我们的最小系统。首先我们程序会加载...原创 2018-10-26 11:17:25 · 8183 阅读 · 4 评论 -
VHDL 单脉冲的产生
在做FPGA设计时,中我们经常会遇到需要经一个高电平信号转化成一个带脉冲信号。比如复位信号进来是一个很长的高电平信号,但是复位信号又必须做成一个带脉冲信号,因此掌握将一个高电平信号转化成单周期的脉冲信号很有必要。下面就转化原理进行分析:先上图,看图好说话:信号1是原始输入信号;信号3是信号1经过一个周期的延迟得到的信号;信号2是信号3取反得到的信号;信号4是信号1延迟两个周期得到的...原创 2018-06-02 00:03:53 · 4581 阅读 · 2 评论 -
使用xilinx时钟向导生成时钟有多重要?
在做一个项目的时候遇到了个问题,经排查是由于时钟不稳定导致。因此果断改用xilinx的时钟向导生成所需的时钟,重新生成比特流,下载验证,成功。...原创 2018-06-24 21:45:40 · 609 阅读 · 0 评论 -
FPGA按键消抖(附带程序)
这里介绍一种基于延时判断的按键消抖程序。首先,程序会一直检测按键是否按下,如果按下了就延迟一段是间再去判断,如果此时按键的状态没有改变,那么就认定这次按键的触发是人为触发的。否则,认为是误触发。直接把代码贴出来吧。(也可以到我的资源页面进行下载按键消抖)-------------------------------------------------------------------------...原创 2018-06-29 11:07:27 · 8180 阅读 · 0 评论 -
FPGA——上电自复位方式(非常简单)
上电自复位对FPGA的稳定性及其重要,因为对于某些设计,上电之后需要进行一些状态寄存器的初始化,或者系统自己初始化都需要一个复位信号。在这里我就介绍一个比较好用的方法,大家一起学习一下。library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;use IEEE.numeric_std.all;li...原创 2018-06-20 11:49:26 · 11723 阅读 · 8 评论 -
Zedboard 学习记录(一):移植Linaro-ubuntu系统
准备工作:1)启动文件:https://download.csdn.net/download/maochuangan/106892572)ubuntu-linaro 系统3)4GB的SD卡4)ZedBoard 开发板 版本:REV-D5)装有Ubuntu系统的电脑一台(用虚拟机也可以) 移植工作:1、将SD卡插到Ubunt电脑中。2、在Linux中进行格式化,并...原创 2018-09-26 18:11:51 · 1622 阅读 · 1 评论 -
浮点数基础知识
浮点数由四部分组成:符号位(Sign Bit)、尾数(Mantissa)、基数(Radix)和指数(Exponent),如下图所示。本文将介绍IEEE-754所定义的二进制标准浮点数,即基数为2的情形,如下式,采用类似于图一的表示形式,这里s、m、e分别为符号位、尾数、指数的实际值,n为相应的浮点数的值。IEEE-754规定了三种浮点数格式:单精度、双精度和扩展精度。其中单精度浮点...原创 2018-10-10 15:29:50 · 6142 阅读 · 0 评论 -
Xilinx 乘法器IP的使用
软件工具: Vivado一、配置Multipiler按照以下进行配置。重点说一下流水线级数,这里选择5,说明时钟使能后5个周期可以输出结果。二、编写代码生成的模块:COMPONENT point_mul PORT ( CLK : IN STD_LOGIC; A : IN STD_LOGIC_VECTOR(31 DOWNTO 0); B...原创 2018-10-10 17:17:26 · 21921 阅读 · 5 评论 -
FPGA 设计 Verilog 基础(二)
1.1 状态机设计状态机是许多数字系统的核心部件,是一类重要的时序逻辑电路。通常包括三个部分:一是下一个状态的逻辑电路,二是存储状态机当前状态的时序逻辑电路,三是输出组合逻辑电路。通常,状态机的状态数量有限,成为有限状态机(FSM)。由于状态机的所有触发器的时钟由同一脉冲边沿触发,故也称之位有限状态机。根据状态机的输出信号是否与电路的输入有关分为Mealy型状态机和Moore型状态机。电路...原创 2018-10-22 12:00:01 · 513 阅读 · 0 评论 -
FPGA 设计Verilog基础(三)
一个完整的设计,除了良好的功能描述代码,对程序的仿真验证时不可少的。学会如何去验证自己所写的程序,即如何调试自己的程序是一件非常重要的事情。而RTL逻辑设计中,学会根据硬件逻辑来写测试程序。即Testbench是尤其重要的。Verillog测试平台是一个例化的待测(MUT)模块,重要的是给他施加激励并观测器输出。逻辑模块与对应的测试平台共同组成仿真模型,应用这个模型可以测试该模块是否符合自己设计的...原创 2018-10-22 20:27:55 · 1183 阅读 · 1 评论 -
FPGA设计——按键去抖
按键的去抖,是指按键在闭合或者松开的瞬间伴随一连串的抖动,这样的抖动将直接影响设计系统的稳定性,降低相应的灵敏度。因此,必须对抖动进行处理,及消除抖动的影响。在实际工程中有很多消抖的方案,如RS触发器消抖,电容充放电消抖,软件消抖。本章利用FPGA内部来设计消抖,即采用软件消抖。按键的机械特性,决定着按键的抖动时间,一般抖动时间在5ms~10ms。消抖,也意味着,每次在按键闭合或者松开期间,跳...原创 2018-10-23 15:02:54 · 4457 阅读 · 0 评论 -
使用vivado生成.MCS文件
其实生成.mcs文件非常简单,但是只是对有经验的设计者而言。对于新手,生成一个.MCS文件可能就会遇到各种各样的问题。下面就简单的介绍一下如何生成.MCS文件。这里介绍两种种方法。第一种是使用GUI,也就是用鼠标点来点去就可以。另外一种就是用tcl命令。第一种。第一步:首先生成比特流文件。假设生成的比特文件名字是 led.bit。第二步:选择工具栏的“Tools"—>"Generate M...原创 2018-06-21 17:47:14 · 24334 阅读 · 6 评论