- 博客(21)
- 资源 (7)
- 收藏
- 关注
原创 Zynq 7010入门笔记
一、Zynq芯片简介Zynq SoC的核心是处理器系统,相当于Zynq芯片以处理器系统为中心,FPGA(PL)是它的一个外设。 Zynq-7000 SoC由下列几个主要功能模块组成:处理器系统——Processing System (PS)应用处理单元——Application processor unit (APU)存储接口——Memory interfacesIO外设——I/O peripherals (IOP)内部互联——Interconnect可编程逻辑——Programmab
2021-02-19 22:45:52
9537
1
原创 DDS原理与实现
一、DDS基本原理DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有相对带宽大,频率转换时间短、分辨率高和相位连续性好等优点。较容易实现频率、相位以及幅度的数控调制,广泛应用于通信领域。DDS 的基本结构图如图所示:由图可以看出,DDS主要由相位累加器、相位调制器、波形数据表以及 D/A 转换器构成。其中相位累加器由 N 位加法器与 N 位寄存器构成。每个时钟周期的时钟上升沿,加法器就将频率控制字与累加寄存器输出的相位数据相加,相加的结果又反
2021-02-09 15:34:30
25389
6
原创 接收矩阵键盘数据(FPGA)
一、矩阵键盘由于最早的 MCU(即单片机) 其 IO 口相对较少,而且用到按键过多的话,就会占用过多的 IO。人们为了解决这个问题就引入了“矩阵键盘”。在矩阵键盘中,每条行线和列线在交叉处都不是直接连同,而是通过一个按键直接相连,这样以来一个 4×4 的矩阵键盘只需要 8 根控制线就可以完成16 个按键的控制。二、矩阵键盘使用思路1.检测思路:如,将COL0作为FPGA的输出管脚,当COL0输出低电平时,只需检测ROW0~4是否为低电平即可判断按键 0~4是否被按下。1.COL = 1110,读R
2021-02-09 00:50:03
1037
原创 I2C协议
一、I2C基本概念I2C 总线(I2C bus,Inter-IC bus)是一个双向的两线连续总线,提供集成电路(ICs)之间的通信线路。I2C 总线是一种串行扩展技术,最早由 Philips 公司推出,广泛应用于电视,录像机和音频设备。I2C 总线的意思是“完成集成电路或功能单元之间信息交换的规范或协议”。Philips 公司推出的 I2C 总线采用一条数据线(SDA),加一条**时钟线(SCL)**来完成数据的传输及外围器件的扩展。二、I2C基本原理I2C 总线在物理连接上比较简单,分别由 SDA
2021-01-31 16:45:40
472
原创 FPGA驱动ADC128S052
一、任务1.使用FPGA控制ADC采集DAC输出的电压值。2.能够将一段连续的采样数据使用串口发送到PC。3.能够使用PC下发指令控制ADC芯片采样哪个通道的电压。二、硬件部分为了采集模拟信号,我们用到了模数转换芯片ADC128S052。在进行设计前,我们先到网上查找了该芯片的数据手册。1.芯片功能图2.端口功能表可以看到,该ADC芯片有3个数字输入端口,分别是使能端CS、控制端DIN、时钟SCLK;8个模拟输入端,分别是IN0~IN7,均为模拟电压采集通道;还有1个数字输出端DOUT,
2021-01-29 21:54:41
3127
5
原创 Quartus中fifo IP核介绍与仿真测试
一、前言在使用ADC芯片采集数据时,由于发送端速率有限,如果不及时将数据存储或发送,将会造成数据的丢失。所以当有大量数据需要传输时,ADC与FPGA发送端之间必须要有一个缓冲区,用来暂时存放数据。例如:串口发送波特率是115300bps,11520字节每秒,每个字节发送时间是1/11520s=86.8us。ADC以4us每个采样点的速率执行100次采样,采样结果是12位。串口一次能发8位数据。采样100个点需要400us,而发送100个数据需要86.8*200us= 17360us。400us与1736
2021-01-28 17:00:33
5448
1
原创 FPGA驱动DAC芯片输出(以TLV5618为例)
一、任务使用FPGA芯片控制DAC采集芯片,输出指定的电压值。二、硬件部分为了将FPGA输出的数字电压转换成模拟电压,我们使用到了数模转换芯片(简称DAC)TLV5618。进行设计前,我们先到网上检索并查看了该芯片的数据手册。1.芯片功能图2.端口功能表从功能图和功能表中我们可以看出,TLV5618有四个输入端口:片选信号CS、数据串行输入端口DIN、模拟参考电压REF、数字时钟SCLK。两个输出端分别为OUTA和OUTB,均为对应的模拟电压输出端。3.时序图从时序图中我们可以看到
2021-01-26 22:39:58
10388
6
原创 UART串口接收设计
一、设计思路1.端口设置为实现UART串口接收,所设计的模块应具有如下端口:时钟、复位、波特率设置、串行数据输入、并行数据输出、一次数据接收完成标志。如图:module uart_byte_rx( Clk, //模块时钟50M Rst_n, //模块复位 baud_set, //波特率设置 Rs232_Rx, //RS232数据输入 data_byte, //并行数据输出 Rx_Done //一次数据接收完成标志
2021-01-26 17:57:52
1510
原创 状态机卡死调试方法(工具In-System Sources and Probes Editor介绍)
一、状态机卡死在板级验证时,我们有时会遇到状态机卡死的情形。例如,按下几次按键后,发现led不受控制,或者数据无法继续发送。这个时候就要通过调试器来观察程序在开发板上到底陷在了哪一步。二、调试1.工具我们使用“In-System Sources and Probes Editor”工具进行调试,它的位置在Quartus面板上这个地方:在使用这个工具前,我们需要事先配置文件。2.调用IP核前文讲到过,设计输入有三种方法:原理图,HDL语言描述,IP核。这里我们需要调用Quartus软件提供的IP
2021-01-24 18:57:21
1424
原创 按键抖动现象与解决方案(Verilog)
一、按键抖动按键在按下时,活动触点击打固定触点会有机械振动,因而造成输出波形抖动,因按键形态和触点材料的不同,抖动的过程一般会持续数毫秒,金属触点的按键可能达到10ms,而软性触点(如导电橡胶或薄膜)则可能在1ms以内甚至没有抖动。按键去抖动的实用做法是定时查询,定时器资源往往是极易复用的,一般10ms左右的查询间隔对于用户按键也是足够的,用户操作按键不可能达到50次每秒,按下的持续时间也不可能短于10ms。二、解决思路学过数字电路基础的同学应该都熟悉D触发器的特性,其输入端D和输出端Q的值相隔一个
2021-01-23 21:49:32
10100
2
原创 FPGA实现UART串口协议发送
在当今的电子系统中,经常需要板内、板间或者下位机与上位机之间进行数据的发送与接收,这就需要双方共同遵循一定的通信协议来保证数据传输的正确性。常见的协议有 UART(通用异步收发传输器)、IIC(集成电路总线)、SPI(串行外围总线)、USB2.0/3.0(通用串行总线)以及 Ethernet(以太网)等。在这些协议当中,最为基础的就是UART,因其电路结构简单、成本较低,所以在注重性价比的情况下,使用非常广泛。一、什么是UARTUART(Universal Asynchronous Receiver/T
2021-01-22 22:06:37
1155
2
原创 序列发送逻辑设计
今天学习了序列发送逻辑的设计,具体目标为:实现模块发送序列数据,每发送一个数据后,延时50us,再继续发送下一个数据,发送的数据可以自定义。一、数据发送模块对于控制数据发送的模块,要求具有数据并行输入端,使能端,数据发送端等端口,具体代码参考如下:module data_send( Clk, Rst_n, en, data, tx_done, tx); input Clk; //时钟 input Rst_n; //复位端 input en; //使能端 input
2021-01-21 22:49:06
339
原创 if-else写法和case写法在底层逻辑上实现的差异
一、非等占空比信号产生方法若要实现led灯闪烁,且亮暗时间可以人为决定,则需要输出占空比可调的PWM波,可参考如下代码(定时器部分省略):always@(posedge Clk or negedge Rst_n)if(!Rst_n) led <= 0;else if(cnt == 49) led <= 1;else if(cnt == 89) led <= 0;此时输出端波形如图所示:二、序列型脉冲信号产生方法同理,也可以采用多个if-else的方法来设计一个波形
2021-01-20 19:07:13
1163
1
原创 Verilog 和System Verilog(选)
一、let语句let是看起来与带有参数的宏定义编译指令('define)类似,但是let语句有作用域,而带参数的’define是全局有效的。在定义带参数的表达式时,应尽量使用let语句。如:let max(a,b) = a>b?a:b; logic signed [15:0] a,b,c; …… c = max(a,b);二、结构与联合1.结构结构是多个变量的集合,可以作为整体引用,也可引用其中的单个成员。结构分为不紧凑的(unpacked)和紧凑的(packed),默认为不紧凑。
2021-01-19 16:12:11
1449
原创 Cyclone IV E资源结构与重点电路
一、Cyclone IV E资源结构1.锁相环 PLLPLL 的英文全称为 Phase Locked Loop,中文名叫锁相环,属于模拟电路。该电路的一个特性就是能够将输入的周期信号进行分频和倍频,并最终输出一个或多个稳定的,与输入信号频率和相位相关的信号。例如,我们将一个 50MHz 的有源晶振产生的时钟信号接到 PLL的输入端,然后设置 PLL 的一路输出的倍频和分频系数分别为 5 和 2,则当 PLL 对输入信号完成锁定后,就能在该路输出上得到 125M 的时钟,然后,我们就可以使用该时钟信号作为
2021-01-17 14:57:28
2156
原创 定时器设计与层次化设计(驱动蜂鸣器)
一、定时器设计1.定时器简介定时器即计数器,可以循环定时,也可以单次定时。2.定时器代码module timer( Clk, //时钟信号 Rst_n, //复位信号 CNT_ARR, //定时预设值 MODE, //该信号决定定时模式:1为循环定时;0为单次定时 Cnt_Go, /* 循环定时模式:高电平使能计时,低电平停止计时。 单次计数模式:该信号的一个单基准时钟周期的脉冲使能一次定时。*/ CNT_NOW, //当前定时值 Full_Flag //定
2021-01-16 23:23:39
540
原创 Verilog计数器的写法以及波形矢量文件的建立
一、计数器简介计数器的核心元件是触发器,基本功能是对脉冲进行计数,其所能记忆脉冲最大的数目称为该计数器的模/值。计数器常用在分频、定时等处。计数器的种类很多,按照计数方式的不同可以分为二进制计数器、十进制计数器以及任意进制计数器,按照触发器的时钟脉冲信号来源可分为同步计数器与异步计数器。按照计数增减可分为加法计数器、减法计数器以及可逆计数器。下图为一个基本的计数器:二、代码全部代码如下:module counter #( parameter M = 100 //计数器模长)( input
2021-01-14 20:57:11
1286
原创 testbench写法以及Quartus II和Modelsim Altera联合仿真
一、概要仿真是FPGA开发过程中必不可少的一步,就像C语言开发过程中“编译、运行”一样。由于Verilog语言是对于电路结构的描述,因此需要EDA平台对代码进行分析综合后才能进行仿真。这里以一段“二选一数据选择器”的代码为例,介绍testbench(测试平台)的写法和使用Quartus II与Modelsim Altera进行联合仿真的步骤。二、Quartus II简单开发过程1.创建工程单击桌面Quartus II图标,打开软件进入如下界面点击左上角"File-New Project Wizar
2021-01-13 21:24:24
3762
2
原创 FPGA小白入门
简单说说本人大二,刚刚接触到FPGA,打算寒假系统地学一学。目前手上有两块芯片,分别是赛灵思的ZYNQ和Altera的Cyclone IV 。由于手头上Altera的学习资料比较全,因此寒假期间打算从Altera的板子入手,系统学习FPGA开发流程后再着手学习ZYNQ。用到的软件有Quartus II、Vivado 2019.1、modelsim SE。学习过程中我会不定时将学习心得写在博客中,一是方便自己回头复习,二是便于与队友交流。希望在半年后的电赛中能取得好成绩。...
2021-01-13 16:25:41
355
FPGA实现24小时显示时钟
2021-03-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人