- 博客(19)
- 收藏
- 关注
原创 网络PTP同步及其verilog实现
说明,该文章主要用来记录IEEE1588文档的学习,方便以后查看使用。 1,数据类型定义 IEEE1588里定义了一些基本数据类型,这些和c语言的数据类型基本一致。如boolean表示一个布尔量,其值为True or False;enumeration4表示一个4bit枚举量;nibble表示一个4bit的字段;integer32表示一个32位的有符号整数。...........................其他数据都是由这些数据构成,需要注意的有:a...
2021-01-20 14:23:36
3439
5
原创 Xilinx Zynq-7000系列芯片介绍
1,启动流程 zynq7000系列的启动流程如下图所示,zynq的启动需要从ps端开始,因此zynq可以只使用ps端,但无法只使用pl端。启动过程分为三步:stage0,BootRom;stage1,FSBL/User code;stage2,U-boot/System/App。 stage0:ps端电源稳定后,ps端会复位所有寄存器、采样boot引脚、初始化配置时钟,然后执行BootRom(对用户不可见,出厂即固化在128KB的ROM中,初始地址为0。zynq7000...
2020-11-23 17:40:10
5908
原创 C语言基础知识笔记
1,指针变量 指针变量是一个变量,只是它的值是一个地址,与其相关的两个操作符为*和&。&为取地址符,用于获取变量的存储地址;*取值符,用于获取指针指向的地址中存储的变量,但需要注意的是*也用于定义指针变量。在32位的系统中,不论指针变量类型是什么,它总是32位;但是指针类型决定了指针变化时的基准量。例如,定义一个整型指针int* p = (int*)0xf0fe0c00,那么p+1的值为0xf0fe0c04;定义一个字符指针char* p = (char*)0xf0fe0c...
2020-11-14 17:37:27
163
原创 xilinx axi详解
1,axi4基础知识 axi(advanced extensible interface)高级可扩展总线接口是一种总线,是ARM公司提出的AMBA(advanced microcontroller bus architecture)高级微控制器总线结构协议中的一部分,它是一种高性能、高带宽、低延迟片内总线结构。axi4协议可百度IHI0022G,然后找资源下载。axi总线有5个独立的事物通道(transaction channel),写结构包含3个通道,为写地址通道AW,写通道W,写响应通...
2020-11-03 11:10:11
4109
4
原创 fpga基础知识
1,为什么fpga代码设计中要避免锁存器产生?原因大体有三点,一是fpga基本组成单元是由查找表、触发器组成,因此锁存器需要占用更多的资源;二是锁存器无法过滤掉毛刺(glitch),准确说组合逻辑电路都存在此问题,当该信号作为使能信号、复位信号、出发信号等,可能会造成问题,而触发器只要保证满足setup、hold(时钟边沿),就可以过滤掉毛刺。避免latch产生,主要就是保证逻辑完整(if els...
2020-10-23 12:02:16
928
原创 xilinx A7芯片介绍
1,CLB可配置逻辑模块 CLB(configurable logic block)是xilinx fpga的基本模块。其结构如下图所示,通过switch matrix矩阵开关连接,x是横坐标,y是纵坐标。一个CLB模块由两个slice模块构成。slice分为SLICEL和SLICEM,只有后者才可以配置为分布式内存distributed memory或者移位寄存器SRL(shifted register)。一个slice又由4个lut6、8个flipflop以及算术进位链(arithmati...
2020-10-17 17:28:15
10793
原创 verilog和modelsim学习
1,`timescale (time unit)/(time precision),该语言是用于仿真文件中指定时间单位和时间精度的,时间单位、精度的可以是1、10、100这三种整数,后面的单位可以是s、ms、us、ns、ps、fs,时间精度必须小于等于时间单位。仿真最终的时间计算是nx时间单位,然后按精度四舍五入得到的。需要注意的是同一个仿真工程里,有多个文件使用timescale,精度会按照最小...
2020-10-14 14:56:55
1448
原创 c语言编译过程
C源文生成可执行文件包括预处理(preprocessing)、编译(compilation)、汇编(assembly)、链接(link)四个过程。预处理就是将.c文件生成.i文件,该过程将头#include包含的库文件和头文件在相应位置展开,将#define的宏定义替换,处理#ifdef等条件编译,去掉注释等。编译过程是将.i文件生成.s文件,该过程检查语法,生成汇编文件。汇编过程是将.s文件生成.o文件,该过程将汇编文件翻译成机器可执行的指令文件,汇编过程是独立的,每一个.c文件都会对应一个.o...
2020-09-03 11:37:30
146
原创 xilinx ddr3 MIG ip核使用详解
DDR3基本内容介绍 1,DDR3简介 DDR3全称double-data-rate 3 synchronous dynamic RAM,即第三代双倍速率同步动态随机存储器。所谓同步,是指DDR3数据的读取写入是按时钟同步的;所谓动态,是指DDR3中的数据掉电无法保存,且需要周期性的刷新,才能保持数据;所谓随机存取,即可以随机操作任一地址的数据;所谓double-data-rate,即时钟的上升沿和下降沿都发生数据传输。DDR3读取速度是SDRAM的8倍,为什么呢?这里不是太懂,也一直没懂,因
2020-08-12 22:52:20
12971
1
原创 Xilinx fifo研究总结
最近数据缓存方面用到了较多的fifo,发现Xilinx的fifo的depth、rdcnt、full flag等参数的时序会因为fifo的种类(standard or fwft)、时钟(dc or single)、位宽(same or not)等,因此写文章记录一下,方便以后查看。先说说自己的结论吧,主要是以下几点:1,full、empty信号变化会因为情况不同而不同,但有两点是所有的情...
2020-03-24 13:56:15
5023
3
原创 FPGA中常用到的计算转换
算法经过软件设计和调试之后,需要映射到FPGA中,由于软硬件的区别,大部分算法需要经过等效转换,变成硬件容易实现的方式,才能映射。下面就大体总结一下常用的转换吧。定常数转换。即一个信号乘以或者除以一个常数,这种通常转换为移位和加法的形式。如a*121=a*(2^8 - 2^2 - 2^1 - 2^1)。又如a/25 = (a*2^10)/(25*2^10) = a*40.96*(2^-10)...
2019-11-29 14:40:04
1120
原创 简单介绍TCP/IP协议
TCP/IP协议将网络进行设计进行分层,总共包括链路层、网络层、传输层和应用层,其中链路层对应7层模型的物理层和数据链路层,应用层对应7层模型的会话、展示和应用层。物理层主要定义码元的编码方式,即在物理介质上传输时什么表示0什么表示1;另外物理层应当定义连接介质(电缆、连接器等)的物理、机械等特性。链路层主要定义mac地址,每个网卡的mac地址唯一,由6个字节构成。链路层中的数据流是以以太...
2019-11-23 20:30:58
1241
原创 FPGA时序约束学习
时序(timing)是与FPGA速度相关的三大指标之一,其余两个为延时(latency)和吞吐量(throughput),这三个指标是相互影响的,设计时需要权衡。如更高的吞吐量通常意味着更多的寄存器,这有可能会增加延时;更低的延时通常意味着更少的流水线(pipeline),更大的组合逻辑,这可能会降低系统工作频率。接下来就讲讲lattice芯片中与时序约束相关的东西吧,我也是初学者,有很多不足之处...
2019-11-22 14:00:14
2469
原创 lattice ECP5-25管脚分配的一些体会
本文主要参考的是Lattice的I/O使用手册,芯片为ECP5-25,官网下载搜索TN1265即可。FPGA中,数据与采样的关系有两种,中心对齐和边沿对齐,I/O口的高速设计也就是围绕这两个展开的。对于边沿对齐,需要调整时钟,保证满足捕获触发器的时序要求;对于中心对齐,需要平衡数据和时钟的延时,满足捕获触发器的时序要求。例如下图1是发送时边沿对齐模式的配置,ECLKSYNCB模块用于将时钟布到EC...
2019-10-30 18:16:24
5052
原创 lattice ecp5-25学习
在这里记录一下,也是对学习的一个简单总结吧,也方便自己以后查询。项目中用到的是Lattice LFE5U-25F-6BG381C这款芯片,该芯片采用40nm工艺,相比以前有更多的dsp,性价比高。先看看这块芯片的资源吧,如下图所示。有197个PIO口,2个锁相环PLL,56个ebr(每个ebr18kb,相当于1个18x1024的dpram)或者1008kb嵌入式内存,28个18x18乘法器,24k...
2019-10-30 17:51:31
4559
1
原创 fpga开发流程
感觉fpga开发流程和软件开发流程差不多。首先,当然是需求分析啦,根据分析规划好系统功能,自顶向下划分出功能模块,同时根据整体指标综合性能、价格、速度等选择合适的fpga芯片。其次,就是设计输入啦,即写功能模块,在fpga中叫rtl级设计。RTL设计不关注资源、延时等东西,只是描述数据流向和处理逻辑。模块写完,就进行行为仿真啦,主要检测逻辑有么有问题,也就是些testbench,主要...
2019-10-21 17:53:42
259
原创 为什么需要异构计算?
我们为什么需要异构计算呢?异构计算到底是什么呢?我也不太懂,看了一下被人的博客,大体了解了一下。一方面,半导体行业有个摩尔定律,即每18个月,硬件的性能就会翻一倍;但现在,这个定律失效了,由于工艺、材料等的限制,一块芯片上无法再放更多的晶体管,因此,硬件性能的提升变缓了。另一方面,随着物联网、ai、无人驾驶等的发展,各计算平台处理的数据量也在不断增大,图像、视频处理以及新的算法对硬...
2019-10-21 16:19:23
1553
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人