FPGA
FIFO
FIFO 本质是由 RAM 加上读写逻辑构成的先入先出的数据缓冲器。与 RAM 的区别是 FIFO 没有外部读写地址线,顺序写入顺序读出数据,其数据地址是由内部读写指针自增完成,因此 FIFO 在读写时不需要考虑读写冲突的问题。 根据 FIFO 工作的时钟域,可以分为同步…
FPGA开发时序图绘制
开始的时候画时序图都是拿 visio 硬连,但是那个线宽太难统一了,丑不拉几的,遂学习 waveform 语法使用代码来画时序图。 开始
Vscode 中安装 waveform render 或者在 GitHub 搜索 wavedrom 安装即可。由于 vscode…

ZYNQ-PS GPIO中断过程
查找中断控制器配置信息并初始化中断控制器驱动(XScuGic_LookupConfig、XScuGic_CfgInitialize) 设置中断类型(XScuGic_SetPriorityTriggerType)
为中断设置中断处理函数(XScuGic_Connect)
使能中…
ZYNQ-IP-AXI-GPIO
AXI GPIO 可以将 PS 端的一个 AXI 4-Lite 接口转化为 GPIO 接口,并且可以被配置为单端口或双端口,每个通道的位宽可以独立配置。 通过使能三态门可以将端口动态地配置为输入或输出。
AXIGPIO 是 ZYNQ PL 端的一个 IP 核,可以将 AXI…
Verilog中if语句和case语句综合出的电路区别
区别是 if else 的逻辑判断有优先级,最内层的 if 的优先级最高,case 的逻辑判断是并列的。 每个 if else 综合出来的电路是一个 2 选 1 选通器。当信号有明显优先级时使用该语句,但是 if 嵌套太多的话会导致路径延时过大,降低运行速度…
ZYNQ中的GPIO
GPIO 通过 MIO 提供 54 路接口,其中 16 路位于 bank 500,剩余位于 bank 501。还通过 EMIO 接口提供从 PL 来的 64 路输入和 128 路输出。GPIO 控制和状态寄存器内存映射在基址 $0xE000_A000$。 ZYNQ 的…
FIR滤波器的架构
全并行脉动滤波器对对称系数、反对称系数和零值系数进行了优化。滤波器的时延受到滤波器系数的对称性影响。 当对称系数绝对相等时,它们共享同一个 DSP block。这种配对共享允许在实现的过程中使用 Xilinx 和 Altera 的 dsp block 中的 pre-adder。…
Quartus报错记录
报错如下 可以看到 Pin_F 16 既被用于 DAC_DATA,又被用于 nCEO 引脚,因此才会报错不能将多个引脚赋到 Pin_F 16 上。
Solution
将 nCEO 的 value 设置为 Use as regual I/O 即可解决问题。
Testbench仿真脚本编写指北
Note 由于 Quartus 的 VWF 仿真只能仿真很短的时间,而且 Vivado 仿真的时候也需要添加激励信号,因此需要编写 testbench 文件进行激励仿真。
编写 testbench 的目的是为了测试 module 的功能、性能是否符合设计的预期…
FPGA中的电平标准
FPGA 在与外界进行信息交换时,为了确保信息的正确性,发送和接收信息都要对信息有认定的标准。在数字电路中,我们常用电压高低来表示 “0” 和 “1”,那么多高的电压才会被当作 “1” 呢,这个时候就需要一个标准,这个标准就是电平标准。…
阻塞赋值和非阻塞赋值
阻塞赋值 “=” 必须是阻塞赋值完成后,才进行下一条语句的执行;赋值一旦完成,等号左边的变量值立即变化。在同一个块中,阻塞赋值表达式的书写顺序会影响赋值的结果。硬件没有对应的电路。
即串行赋值,语句从上到下顺序执行,立即生效
非阻塞赋值 “<=”
在赋值开始时计算表达式右边…
HDL coder使用手册
💡 由于本科毕设女朋友准备使用 FPGA 完成,因此写这篇文章帮助她快速上手 HDL coder 的使用,降低前期入门的难度。 名字中含有 HDL 的库中的模块一般都可以用来生成 HDL 代码。直接搜索模块名称,比如搜索 fir,
可以看到旁边会显示位于哪个库中…
ZYNQ
ZYNQ 体系结构 Zynq 的总体架构包含两个部分:PS(处理器系统)和 PL(可编程逻辑)。这两部分的供电电路上相互独立的,因此 PS 和 PL 可以单独使用,不被使用的部分可以断电以降低功耗。不过 Zynq 最有价值的模式上两个组成部分结合起来使用。
PS(处理器系统)
作…