ZYNQ学习笔记(二)
疑问
- 所有AXI4总线上主设备和从设备之间的位宽要一样吗?可以不一样
- 怎么写flag?
知识点
-
黄标为握手后第一个数据(注意上升沿)
-
前仿真功能正常,但是后仿真显示该端口接地
原因是data_num在两个always块被赋值
-
PS-PL接口
PL Interface Comparison Summary
ug1037-vivado-axi-reference-guide
Exploring the PS-PL AXI interfaces on Zynq UltraScale+ MPSoC
-
固化https://blog.csdn.net/qq_39507748/article/details/116072620
IP核
JTAG2AXI
matlab安装HDL Verifier Support Package for Xilinx FPGA Boards
-
To access the board from MATLAB, create an
aximanager
object and use thereadmemory
andwritememory
methods to read and write memory-mapped locations on the board.Access Memory on FPGA Board from MATLAB
Before you can use this example, you must have a design running on an FPGA board connected to the MATLAB host machine. The FPGA design must include an AXI manager IP that is customized for your FPGA vendor. The support package installation includes this IP. To include the IP in your project, see the Access FPGA Memory Using JTAG-Based AXI Manager example.
1
h = aximanager('Xilinx','JTAGCableType','FTDI');
Axi Bram_contorller
存储深度在Address Editor 中修改。其中最小为4K,最大为32M。
- Block Memory: Use BRAM Controller and Standalone mode at the same time?
- 注意AXI4 Interface Block Memory Addressing,地址有偏移 ( PG058 BRAM 用户指南第24)
- 关于Bram_contorller开启bram的功能【IP分析】BRAM的实用功能
问题记录

axi_bram_ctrl中bram位宽选择256位时
1 |
|
选择32位时,发现写进去的和读出来的不一致
1 |
|
问题关键点在于数据位宽上

可以发现,一开始axi_bram_ctrl选择256位宽后,bd里面bram显示的数据位宽是256,综合后RTL网表里显示的也是256,但当axi_bram_ctrl选择32位宽后,bd和综合后的网表显示的位宽仍然保留256的位宽,导致出现问题。
解决方式:删掉bram这个ip,重新加入。。。
AXI
AXI_VIP
UART2AXI
串口
RF Data Converter
文章
阈值监测

-
Sticky Over Mode 超过即置位,
XRFdc_ThresholdStickyClear
复位 -
Sticky Under Mode 低于阈值一定周期后置位,
XRFdc_SetQMCSettings
复位。低于阈值->信号小->改变QMC增益->信号增强,复位,重新检测电平- Hysteresis Mode 超过即置位,低于下限阈值一段周期后自动复位。适用于AGC应用。
DAC

Distribute clock
单独使用一个DACBANK的dac时需要关闭时钟路由,否则会导致时钟输入不进去,DAC无法启动

Cordic
DDS Compiler
-
phase dithering and taylor series 区别 PG141 P41
-
SFDR 与位宽,补偿方法的关系 PG141 P42
BRAM
-
ena和wea不同同时拉高,先拉高ena,后仿真看出
-
1
(* X_INTERFACE_MODE = "Master" *)
-
Block Memory: Use BRAM Controller and Standalone mode at the same time?
URam
- 在前仿真中,uram读取延迟是1,但是后仿真正常(Vivado 2022.1)
read latency of uRAM doesn’t change in simulation when you change optional output registers, why?
XPM_FIFO_ASYNC



Zynq-7000 Verification IP
How to use the Zynq-7000 Verification IP to Verify and Debug Using Simulation
XDMA
-
https://github.com/mwrnd/innova2_experiments/tree/main/xdma_stream
XDMA流数据传输工程及Linux环境下测试; -
https://github.com/mwrnd/notes/tree/main/XDMA_Communication#install-xdma-driver-from-dma_ip_drivers
XDMA通信一些示例工程; -
https://github.com/Xilinx/dma_ip_drivers/tree/master
Xilinx最新XDMA的驱动程序及测试程序 -
LabVIEW FPGA PCIe开发讲解-7.2节:目前主流的4大Xilinx FPGA PCIe DMA通信IP核讲解
Vivado
-
IP核传播参数 UG994 P148
-
FSM coding - 1 vs 2 vs 3 process style - which one is preferred
-
Vivado strategies:
针对性能:Perfornance_Explore Perfornance_ExplorePostRouteFhsopt Perfornance_WLBlockPlacement Perfornance_WLBlockPlacementFanoutopt Perfornance_NetDelay_high Perfornance_NetDelay_low Perfornance_Retiming Perfornance_ExtraTimingOpt Perfornance_Refineplacement Perfornance_SpreadSLLs Perfornance_BalanceSLLs
针对布线拥塞:
Congestion_ SpreadLogic_high Congestion_ SpreadLogic_medium Congestion_ SpreadLogic_low Congestion_ SpreadLogic_Explore 以下三个针对SSI芯片: Congestion_ SSI_SpreadLogic_high Congestion_ SSI_SpreadLogic_low Congestion_ SSI_SpreadLogic_Explore
针对资源:
Area_Explore Area_ExploreSequential Area_ExploreWithRemap
针对功耗:
Power_DefaultOpt Power_ExploreArea
针对运行时间:
Flow_RunPhysOpt Flow_RunPos tRoutePhysOpt Flow_Runtimcoptinized
-
HLS
- pp4fpgas-cnFPGA并行编程
PetaLinux
-
mmap dma AXI Direct Memory Access
-
手把手教你在Windows下用WSL运行Vitis/Vivado/Petalinux
在适用于 Linux 的 Windows 子系统上运行 Linux GUI 应用
Install PetaLinux Tools 2023.1 on WSL2 Running on Windows 10 & Build and Run the VCK190 BSP on QEMU
Verilog
-
信号延迟
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22module data_delay #
(
parameter M = 8, // 设置数据宽度
parameter N = 10 // 设置延迟时钟周期
)
(
input clk,
input [M-1:00] data_in,
output [M-1:00] data_out
);
reg [M*N-1:00] data_r;
always @ (posedge clk)
begin
data_r <= {data_r[M*(N-1)-1:0],data_in};
end
assign data_out = data_r[M*N-1:M*N-M];
endmodule
方案
TDC
延迟线
- https://blog.csdn.net/qq_41305217/article/details/134232959
- “秒表”的设计-Time-to-Digital Converter-TDC浅析原理与公式化
多相位时钟
ADI
- analogdevicesinc.github.io/pyadi-iio
- antsdr-pynq
- ADI vs MathWorks Support libiio
- HighSpeedConverterToolbox
- python bonding for libiio
Others
ZYNQ学习笔记(二)