- 博客(32)
- 收藏
- 关注
转载 Quartus II LogicLock及增量编译Design Partition
首先,得先看看QuartusII的编译过程是个怎么样的,要了解这个过程很简单,看看下面这张图,谁都不陌生:当我们点全编译之后,下面的几个过程就会一个一个打上勾,而我们编译的过程也就是和这个运行过程是一致的:先是分析综合,再是布局布线,然后是汇编(这里不是指汇编语言的汇编,而是说将布局布线后的“电路”汇编成可下载到芯片内的“程序”),还有时序分析以及生成网表。我们仔细看它编译的过程会发现...
2018-08-16 18:04:09
3201
4
转载 通过脚本直接生成JIC文件的方法
大家知道Altera的FPGA可以通过EPCS这种Flash性质的配置芯片来进行配置,而EPCS芯片的烧写有两种方式,一种是直接通过AS口直接独立烧写POF文件,这样就需要给电路设计一个独立的10针插座;还有一种方式是可以借用JTAG的口来烧写,只是需要事先将配置文件*.sof文件转换成JIC文件。 JIC文件的转换方法,是在工程全编译后生成SOF文件,然后再通过QII文...
2018-08-15 16:03:15
1720
转载 【Altera SoC】基于SOPC的单通道TDC设计(4)
http://bbs.eeworld.com.cn/thread-465445-1-1.html 3系统测试方法3.1 第一次测试基本原理如下:利用外部按键模拟输入的待测信号的正脉冲,理想状态是,在按键次数充满fifo以后,fifo发出满信号。Fifo每次写满之后会有一个上升沿的跳变信号,故采用这一信号作为中断源,读取fifo中的测量数据。中断初始化程序和中断服务程序如下:...
2018-08-12 20:43:35
1909
转载 【Altera SoC】基于SOPC的单通道TDC设计(2)
1.4 Nios II顶层源程序`timescale 1 ps / 1 psmodule audio_nios ( input wire clk_clk, // clk.clk input wire...
2018-08-12 20:33:46
497
转载 【Altera SoC】基于SOPC的单通道TDC设计(1
http://bbs.eeworld.com.cn/thread-465441-1-1.html1 硬件系统的构建经过“基于超前进位延时链的时间数字转换器”和“延时链测试以及亚稳态分析”两篇文章后,开始着手构建基于SOPC的单通道TDC。最终构建的硬件系统框图如图 11所示。Top_sch的内部结构图如图 12所示,其中各模块的相关说明请参见前文。Sysfifo的内部框图如图 13所示...
2018-08-12 20:24:32
1387
转载 【Altera SoC体验之旅】+基于超前进位延时链的时间数字转换器
1.1 工作原理待测的时间间隔s对应一个正脉冲,图 1给出了测量正脉冲下降沿到紧邻的时钟上升沿之间的延时tf的原理,注意图 1(a)中tf的测量起点时刻为正脉冲的下降沿到达延时链输入端的时刻。图 1(b)为利用延时链测量tf的原理图。图 1(b)中的每个三角表示一个延时单元,它可以是任何一个能带来延时的电路。当代表时间间隔的正脉冲在延时连中到来之前,延时链的输出均为0;在正脉冲进入延时链后,在...
2018-08-12 20:23:02
2004
转载 【Altera soc 体验之旅】+延时链测试以及亚稳态分析1
延时链测试以及亚稳态分析1.前言 图 1 静态时序分析的超前进位延时链信息在上一篇(基于超前进位延时链的时间数字转换器)中,使用TimeQuest分析了延时链的cin到cout的延时为每两个延时单元延时45ps左右(图 1)。但是,对于一个测试的设计,还是要采取一些方法来测试实际的延时单元延时。此文借助SignalTap II工具来实现测试。具体思路是,输入信号的延时间隔除以延时链中边沿移动的...
2018-08-12 20:19:27
1838
转载 Altera FPGA中的延时进位链-LCELL
Altera FPGA中的延时进位链-LCELL 在ALtera的FPGA中需要通过原语添加LCELL添加固定的延时,一般来讲,LCELL的延时相对比较固定,但是随着布线以及温度等影响,延时会有变化,所以通过LCELL设计延时进位链需要计算单个LCELL延时以及控制布线和位置约束。原语调用LCELL如下: RTL View图如下: Post Fitt...
2018-08-11 18:08:38
10624
5
转载 FPGA TDC 进位链
CYCLONE IV的LE结构图:可以看到里面有一个4输入的LUT,有一个3输入的LUT。LE有两种模式,如果是普通模式,就只用到那个4输入的LUT,用来实现4输入的组合逻辑功能。如果是算术模式,就是用来实现加法运算。这个时间一般DATA D输入为VCC或其他,反正不用。DATA C选择使用CIN。4输入的LUT就用来实现DATA,DATAB,CIN的加法运算。3输入的LU...
2018-08-11 17:37:18
14257
6
转载 在Cyclone IVE中使用进位链的几个规则
最近在FPGA上做ps级的Delay line,所以认真剖析了一下Cyclone IVE4的布局布线延迟。这里说明CARRY链的几个特性规则,如有错误请各位大大指出,谢谢。(另外由于匆忙没有时间验证其他Cyclone系列(基于LE结构)是否遵循此特性,若其他系列中有出入请告知我。。)规则一:CARRY链在LAB中必须顺序从上到下进位,跨LAB同样如此(从Altera的坐标系角度上说是按照Y减小...
2018-08-11 17:35:00
1595
原创 FPGA时序约束
最近开发一个项目,由于FPGA的资源有限,编译工程资源利用高达85%。在每次编译后可能会有不同的编译的结果,具体表现在数据读取时序不满足要求,有时候数据的某些位在时钟的不稳定时间被采样了。具体表现,FPGA内部的时钟和数据输出,时序不好,到外围传输芯片的接收,为不稳定的状态,上位机收到就是不是FPGA的实际内部输出理想值。所以在进行复杂设计或FPGA资源利用比较多时,或者说FPGA内部逻辑设计不好...
2018-03-16 14:13:32
1364
转载 Cypress固件架构彻底解析及USB枚举
http://www.eefocus.com/sbogwxf230/blog/12-01/237595_b89c6.htmldscr51里放的是USB描述符表,EZ-USB在重枚举阶段会读取或设置相应的描述符: db DSCR_DEVICE_LEN ;; Descriptor length db DSCR_DEVICE ;; Dec
2017-12-28 17:59:00
790
转载 Cypress USB2.0固件架构彻底解析及USB枚举
Cypress固件架构彻底解析及USB枚举2012-01-19 10:35:56分享:dscr51里放的是USB描述符表,EZ-USB在重枚举阶段会读取或设置相应的描述符:db DSCR_DEVICE_LEN ;; Descriptor lengthdb DSCR_DEVICE
2017-12-28 17:46:24
2315
转载 [转载]USB固件的执行过程
一个USB3.0的固件运行的过程大致如下面的图所示首先是Firmware EntryFX3的切入点是CyU3PFirmwareEntry()这个函数,这个函数定义在了FX3的API 库里面的,而且对用户是不可见的!这个函数规定了程序的入口,这个入口函数做了以下的几个工作:1:禁用Cache,说是为了Bootload。具体不知道cypress是怎么弄的了!
2017-12-27 16:18:43
2092
原创 USB3.0 SlaveFIFO 和FPGA通讯固件
好久没有写了,现在重新开始写这个博客。 最近做了一个项目,涉及USB2.0和USB3.0的各种通讯。USB的通讯我们就选用了Cypress的芯片FX2和FX3,主要考虑资料比较多。在官网上能找到相关的Slave FIFO文档和资料非常方便,甚至都有上位的C++和C#的代码,真是良心公司。其实官网上的代码基本集成了slave fifo的状态机,修改起来也非常方便,根据自己项目
2017-12-25 16:30:15
3918
转载 Matlab绘图-很详细,很全面
Matlab绘图强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影
2016-10-30 15:39:48
37493
1
原创 Zynq和PC的USB通信
最近,研究一下Zynq和PC间的USB通信,在网上找了一个ZedBoard_Standalone_USB_Device_Tutorial_14_6_01例程。 开始用SDK编译,发现build过程有几个错误: MemSize = XUsbPs_DeviceMemRequired(&DeviceConfig); DeviceConfig.DMAMemVirt = (u32) MemPtr; D
2016-10-07 17:17:22
12658
18
原创 Zynq boot mode MIO 配置
Zynq 可以配置从不同目标boot的启动方式,官方提供表格如下: 一般是拨码开关设计,关注从mode0~4,五个配置开关。 其中发现Xilinx的zedboard的原理图中对MIO2-6的net取名和上图不是对应的。也就是说原理的SPI-DQ0/MODE0对应MIO2,上图的MIO2对应的BOOT_MODE3,也就是说两个MODE序号没有对应的关系,不能混淆了, 还是以MIO为准。 几个
2016-10-06 14:29:48
5969
原创 仿照ZEDboard设计板子调试
最近,按照Zedboard设计了一个板子,看起来问题不大。但实际上开始上手就遇到问题。首先是用了一个2百块的Xilinx USB cable, Vivado上直接报错,找不到server。后来借了一个原装的下载线,可以识别出server了,但是却找不到target,仔细排查了一遍,发现一个问题:引脚拉低了,在没有写代码的情况下,Zynq的功耗就很大,几乎触手就会有点烫的感觉,而且输出引脚全部为高
2016-10-05 22:30:39
1242
原创 Xilinx 官方example的TCL使用
最近在研究Zynq的过程中,不可避免的在Xilinx官方网站寻找support。官方的support有不少example和turtle。但是刚开始下载了example发现,下过来的根本不是vivado的工程文件,而是使用TCL写的脚本,以及包含了SDK的source源代码。明眼人知道,在vivado设计工作中,按部就班的模块化了设计,其实还可以用TCL脚本实现,TCL语句可以在Vivado的TCL
2016-09-22 15:48:49
5867
原创 DMA在Vivado和SDK应用解读
在“Zynq DMA 的简单介绍”中,我推荐了一篇DMA的应用实例,如下链接: http://www.fpgadeveloper.com/2014/08/using-the-axi-dma-in-vivado.html 在该文中,hardware的工程建立和编译可以按图索骥,其中作者预留了两个中断接口。 在software中,作者也提供了源代码,带没怎么解释,下文我来解读一下。
2016-09-22 15:12:06
6646
原创 Zynq DMA 的简单介绍
AXI Direct Memory Access (AXI DMA), 从名字我们知道为带AXI 总线的直接存储通道。其优点是通过PS端的简单配置,就实现PL和DDR3之间的快速存储。
2016-09-08 16:04:15
14494
1
原创 XC7Z020 应用框架设计
在摸索了一段时间的Zynq后,自己制作了一块XC7Z020板子,板子到手后考虑使用中的总体框架。基本确定使用Ethernet为PC和board之间的通讯方式,DDR3作为PL端的大数据存储单元,并且划出一些寄存器用于PS和PL间的指令下达和状态返回用途。PL大数据传输例化DMA_IP core,连接DDR3。编写带AXI_lite接口的自定义IP_Core任意读存DDR3,兼顾PL扩展IO用途。在E
2016-09-08 15:17:19
6747
原创 Zynq 的AXI4 总线应用
三种AXI4(支持最大256数据突发传输),AXI4-Lite(AXI4的阉割版,单次传输),AXI4-Stream(高速度流数据传输,无限制突发传输)直接打算使用AXI4
2016-09-07 11:03:29
3691
原创 Visual Studio 中edit Control的文本输入
在Visual Studio 中调用edit Control 设置好后,在文中定义CString 类型用于输入变量。在输入数字有效时,需要更新对话框的内容,调用UpdateData函数UpdateData(TRUE);添加处理代码;UpdateD
2016-09-02 10:00:49
2405
原创 Thorlabs APT activeX 开发应用
因为工作需要,要综合自己板和Thorlabs的BSC202控制器结合在一起,做一个项目。所以在调试时,把Thorlabs电机的控制写到自己的visual studio 代码中去。 其实APT是非常优秀的软件已经为用户提供了Activex 控件,直接拉过来到自己的窗口中。遇到一点问题,没办法直接在控件上右键添加变量,所以老办法,自己用代码添加变量。做完code上的编辑后,build
2016-08-26 16:17:39
2044
转载 VC++中的延时函数
原文链接:http://www.educity.cn/develop/478947.html VC中提供了很多关于时间操作的函数,编写程序时我们可以跟据定时的不同精度要求选择不同的时间函数来完成定时和计时操作。 方式一:VC中的WM_TIMER消息映射能进行简单的时间控制。首先调用函数SetTimer()设置定时 间隔,如SetTimer(0,200,NULL)即为设置
2016-08-25 15:22:11
5664
原创 LWIP和DDR3配合实现 数据接收和发送(zedboard)
在LWIP的基础上,在Echo.c文件中的recv_callback()函数中,显示以太网的数据存储。添加zynq对DDR3的支持文件和首地址定义(可在xparameters.h中查询)#include"xparameters.h"#include"xparameters_ps.h"#include"xil_io.h"#define DDR_BASEARDDR
2016-08-17 16:45:29
4940
4
原创 LWIP 数据接收和发送
在Znyq的SDK例程中,main中主循环发送接收,其中接收为xemacif_input(echo_netif):查询xemacit_input 函数里xemacif_input
2016-08-16 16:45:34
13905
原创 数字锁相放大
前段时间,做了一个微小信号测量的项目。小信号测量要求在5nV以下,并提供电流激励源。在测试中使用了数字锁相放大器,利用ADC采到16位的信号,然后利用锁相积分算法实现小信号提取。在时间和精度的取舍中,选定合适的方案。获取设定的指标要求。
2016-08-13 21:47:20
2936
4
原创 Zynq的LWIP裸奔应用
最近,模仿zedboard做了一个Zynq的ARM+FPGA开发平台。在Vivado上生成硬件bit后,就使用SDK开发软件了,直接使用LWIP示例。可以和电脑连上,电脑显示未知网络,可以用CMD ping成功,但有50%的丢包率。使用TCP/IP助手实现数据读写,有延迟出现。下把修改LWIP修改bug。
2016-08-13 20:25:25
6252
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人