- 博客(16)
- 收藏
- 关注
原创 ZYNQ-Linux设备树驱动下的双DMA循环切换传输数据
一.目标在米尔科技的z-turn 开发板上实现PL数据流送往PS。二.流程分析由于单个DMA每次只能发送一定量的数据,但对于数据源来说数据时源源不断产生的,所以在单个DMA单次发送完成至下一次传输期间,这段时间的数据流失了,所以采用两个DMA实现循环发送数据,防止数据丢失。自定义一个IP核用于产生源源不断的测试数据模拟数据源,再自定义一个IP用于切换DMA发送数据。系统框图如下:通过axi-gpio启动数据源产生数据,数据流再通过DMA切换模块分批次将数据送往DMA。每个DMA发送10万个数据
2020-06-03 15:58:32 3061 1
原创 FPGA试题练习--------异步输入同步输出电路分析
考虑以下电路,当触发器的D端数据输入相对于clk来说是异步的,再这种情况下,因为不知道什么时候会有异步输入的信号、输入信号什么时候撤销,这将导致在clk上升沿来临时建立和保持时间不满足,从而导致输出端Q的数据不稳定。对于该电路来说,D端信号和清零信号均是相对于clk来说是异步信号,因此两个信号均需要考虑,下面进行分析。一.异步输入信号导致亚稳态分析常见的同步电路如下,采用两级寄存器拍了拍,实现信号跨时钟域同步。但这样的电路只适用于异步输入的脉宽大于时钟周期的情况,当输入脉宽太窄时,clk可能出现
2020-07-17 14:41:48 1168
原创 FPGA试题练习--------verilog代码转换分析
试题一将下面这段 C 语言描述的串行处理过程,转换为单拍完成的并行处理,并用可综合的 Verilog 来描述。unsigned char cal_table_high_first(unsigned char value) { unsigned char i; unsigned char checksum = value; for (i=8; i>0; --i) { if (checksum &
2020-07-09 15:20:46 1728
原创 FPGA试题练习--------建立时间和保持时间试题分析
一、目标目前课本和网上给的建立、保持时间分析总是给出模板公式,理解起来总觉得干涩、抽象,所以个人进行了一些总结,试图以更直观、易懂的方式进行分析。二、理论①建立时间:是指在触发器的时钟上升沿到来之前,数据稳定不变的时间。②保持时间:是指在触发器的时钟上身沿到来之后,数据稳定不变的时间。③建立松弛 = 数据所要求的建立时间 - 数据到达时间④保持松弛 = 撒除数据的时间 - 数据所要求的保持时间对于建立时间分析,常见的分析图如下所示。分析建立时间设计到两个时钟上升沿,第一个时钟上升沿触发器1
2020-06-28 14:53:35 2013 1
原创 FPGA试题练习--------异步FIFO设计
一、目标设计一个异步fifo实现匹配读写速率匹配。二、分析异步fifo主要用于读写时钟频率不同时,缓存数据,防止数据丢失。Fifo的深度与读写数据时钟频率、最大猝发传输数据有关。即:对于写端来说,存在fifo写满的状况,此时fifo需给出full标志;对于读端来说,存在fifo读完的情况,此时fifo应给出empty标志。下面分析这两种情况。①对写端fifo写满当写端写数据进fifo,但读端未及时读出数据,导致fifo中的存储空间用完,此时fifo需给出full标志。判断fifo是否满了,可
2020-06-16 15:50:25 589
原创 FPGA试题练习--------CMOS门电路分析
一.目标通过CMOS门电路实现与门、非门、与非门、或门、或非门、异或门,同或门等门电路。实现门电路Y=A+B+C+D、Y=ABCD等类似门电路。二.分析课本上实现了三种基本CMOS构成的门电路:非门、与非门、或非门。这三种门电路都使用P沟道和N沟道MOS管。其构成如下所示从上图中可以看出整个门电路可以分成三部分:上面P沟道MOS、中间信号输出、下面N沟道MOS管。便于分析下面简化成下图:要想使得输出为1,只能使上面PMOS导通,同时下面NMOS截止;反之要得到输出为0,使上面PMOS截止,下面
2020-06-12 18:06:40 2966
原创 FPGA试题练习--------任意整数分频器设计
一.设计目标对输入时钟信号进行1~16分频。二.设计思路从分频数来看,整个设计可分为三部分:1分频、奇数分频、偶数分频。①1分频:可直接将输入时钟信号进行输出。②偶数分频:使用一个计数器在上升沿或者下降沿进行计数,计数到N/2时,分频时钟进行跳变。③奇数分频:由于奇数分频会在输入时钟信号的上升沿或者下降沿进行跳变输出,所以采用两个计数分别对上升沿和下降沿进行计数。设计原理如上图所示,将奇数N分成三个部分,前(N-1)/2个Tclk、中间一个Tclk、后(N-1)/2个Tclk。从0时刻开始,
2020-06-12 10:18:24 583
原创 Zynq-linux PL与PS通过DMA数据交互
一、目标在米尔科技的z-turn板上,采用AXI DMA 实现zynq的PS与PL数据交互。二、分析①PS数据传PL驱动中的测试程序中给出一堆数据,通过DMA传输到AXI4-Stream Data FIFO ,PL端从DATA FIFO中把数据读出来。②PL数据传PS将PS传入PL的数据回传,在PS端显示出数据,最后将数据乘2再送入DMA。③PL端代码思路1)读数据在加上DATA...
2019-10-04 10:51:17 16201 23
原创 米尔科技ZYNQ -Linux下的DMA驱动
一.目标在米尔科技的z-turn板上实现linux下的DMA驱动,同时对DMA中断进行测试。二.分析ZYNQ的AXIDMA有Direct Register Mode和Scatter/Gather Mode,本文使用的是Direct Register Mode。Vivado上PL端的构造如下图所示,开启了DMA中断(PL-PS中断)。对于AXI-DMA来说,CPU通过S_AXI_LITE得出...
2019-08-08 19:15:19 6487 10
原创 米尔科技Zynq pl中断的linux驱动
Zyqn pl中断一.目标在米尔科技zynq的开发平台上,通过zynq的按键开关,实现pl中断。二.分析原理图挂在pl端,需要在vivado上进行引脚锁定。配置如下当然可以通过中断函数操作三色灯,也可以不用管三色灯了,在中断中打印信息也可证明进入中断了。三.代码实现引脚限制文件set_property PACKAGE_PIN R14 [get_ports {gpio_rtl...
2019-08-02 18:09:22 1160 1
原创 米尔科技Zynq利用EMIO操作三色灯的linux驱动
一.目标在米尔科技的zynq的Randisk操作系统上利用EMIO操作三色灯亮灭。二.分析三色灯是挂载在PL部分的,PS想要操作它可以通过EMIO接口实现。IP配置关键如下产生顶层文件中有gpio_0_tri_io。驱动部分的IO口地址可以从手册中查看,类似MIO操作。三.代码实现①vivado上的约束文件set_property PACKAGE_PIN R14 [get_...
2019-07-25 20:44:03 1179
原创 米尔科技zynq利用MIO操作LED灯的linux驱动
一.目标在米尔科技zynq的randisk操作系统上,通过编写驱动,实现对两盏灯的控制。二.分析①硬件部分这两盏绿灯位于zynq的MIO0和MIO9上。有关操作IO口的地址,查找ug585-zynq-7000-TRM手册可以看出GPIO基地址为0xe000a000,同样的有关IO操作的寄存器相对地址可以从手册中找到。②boot.bin生成在vivado上进行配置IP等一些列...
2019-07-25 16:37:40 1267
原创 米尔科技zynq三色灯 linux 驱动
一.目标在zynq的randisk操作系统上,通过编写驱动,实现对三色灯的控制。采用的是米尔科技7z020开发板。二.分析1)逻辑分析三色灯是挂载在PL上,可以通过AXI-GPIO实现ps控制。由于是三色灯,所以只需要三个位宽即可,同时设置为输出。通常操作一个I/O口,①需要配置I/O口时钟,②配置I/O口方向(输入还是输出),③I/O口使能,④给I/O口赋值。在vivado上已...
2019-07-20 14:36:17 1022 1
原创 米尔科技ZYNQ-7z020学习(1)
一 板卡基本资料三色灯Led引脚时钟引脚拨码开关时钟约束引脚为U14;三色灯LED引脚为 R:R14 G:Y16 B:Y17拨码开关用于复位,断开为高,接通为低,采用低电平复位。二米尔科技led工程①新建工程②添加新建verilog文件添加代码module led(i_clk,i_rst,o_led);input i_clk,i_rst;...
2019-07-16 10:35:06 2228 2
原创 在vivado上用verilog实现冒泡排序算法
一.要求设计验证冒泡排序算法。给出设计程序、测试程序、时序仿真结果及分析说明。二.冒泡排序原理冒牌排序是将一个数组,按照从小到大进行排列。如下图所示:假设初始数组元素排列为【8、7、6、5、4、3、2、1】。经过一次比较排序后为:经过一轮排序后为:再经过一轮过后为:如此,经过几轮过后,就变为:这就是冒泡排序的流程。三.设计代码module homework3(cl...
2019-04-28 23:45:40 9169 2
原创 用vivado进行FPGA时序仿真练习
一.任务目标设计一个能求出一个32bit字中两个相邻0之间最大间隙的电路。给出HDL设计及testbench描述,综合后的时序仿真结果及分析说明。二.设计代码module homework(gap,clk,clr,data);input clk,clr;input [31:0]data;output [4:0]gap;reg [4:0] gap;reg [4:0] cnt_k;...
2019-04-19 12:33:12 11691
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人