FPGA使用笔记:GPIO操作方式(用于测试设备io驱动性能)

一、前言

使用FPGA测试IO速率,用于后续驱动高速AD/DA等高速芯片做铺垫,很多芯片的驱动都是使用并行接口,不是使用专用接口的,这样采样速率的快慢就有CPU的时许周期决定了。

本文测试FPGA和STM32,后续如果用到更快的芯片也会补充此文,如果是带linux系统的,可以参照此贴

二、环境

编译软件QuartusII13.1、Keil5

语法Verilog、C

芯片EP4CE6F17C、STM32F407、STM32H750

三、正文

1.FPGA的EP4CE6F17C芯片测试

测试程序

bash 复制代码
module top_fpga(
 //global signal
 input clk, //50MHz
 
 //led
 output testF7, //high active
 output testD6 //high active
);
 
 //寄存器定义kbq,测试IO翻转速率
reg [31:0] timer1=0;
reg led_1=0;
reg led_2=0;
assign testF7 = led_1;
assign testD6 = led_2;
always @(posedge clk)
 if (timer1 == 32'd49) //1 秒计数(50M-1=49_999_999) (1ms d49_999)(1us d49)(100ns d4)()()
 timer1 <= 0; //计数器清零
 else
 timer1 <= timer1 + 1'b1; //计数器加 1
//LED 控制
always @(posedge clk)
	begin	//最快的时钟翻转速率,50M晶振20ns周期,实测io翻转20ns,一周期40ns
		led_1 <= !led_1; //LED 点亮 
		led_2 <= !led_1; //LED 点亮
	end
// if (timer1 == 32'd29)//计数器计到 0.5 us
//	begin	
//		led_1 <= 1'b1; //LED 点亮
//		led_2 <= 1'b1; //LED 点亮
//	end
// else if (timer1 == 32'd49) //计数器计到 1 us
//	begin	
//	led_1 <= 1'b0; //LED 灯灭
//	led_2 <= 1'b0; //LED 灯灭
//	end
// else
//	begin
//	led_1 <= led_1;
//	led_2 <= led_2;
//	end
endmodule

采用的是50M外部晶振给到时钟引脚,然后定时器判断时钟来翻转io高低电平,最终测试直接判断时钟上升沿,就翻转io状态,测试结果就是时钟的速率,50MHz的时钟周期是20ns,测试也是20ns电平保持,40ns周期。多个引脚同时控制,也不会有等待延迟,周期与单个引脚一样

使用逻辑分析仪测试结果如下图

使用示波器测试结果如下图

感觉这个还没有达到FPGA的极限,只是时钟晶振的极限,详细更快速的测试需要在多摸索摸索找找方法。也欢迎各位大佬指点提示。

2.STM32F407芯片测试

3.STM32H750芯片测试

无延时控制高低电平翻转,使用单个引脚周期最快在150ns左右,双个引脚周期就变成了300ns左右,3个引脚周期变成了400ns左右,说明stm32的引脚控制逻辑是串行的,一个一个去控制,当有多个引脚同时驱动某芯片时,时许周期就不是特别容易控制的了,下图是单个引脚测试图(无法上传,CSDN出BUG了,看文字就行了)

四、结语

相关推荐
8K超高清8 小时前
CCBN展会多图回顾
人工智能·算法·fpga开发·接口隔离原则·智能硬件
小眼睛FPGA9 小时前
【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程5-DDR3 读写实验例程
fpga开发
unicrom_深圳市由你创科技9 小时前
如何做FPGA的功耗优化?动态功耗管理怎么实现?
fpga开发
不会武功的火柴9 小时前
SystemVerilog语法(9)-验证基础与简单Testbench
嵌入式硬件·fpga开发·fpga·systemverilog·硬件描述语言·rtl·uvm验证
kaizq9 小时前
MuleRun助力MakerChip-FPGA在线编程模拟仿真操练
fpga开发·verilog·龙虾机器人·mulerun·makerchip·在线模拟仿真
c-u-r-ry309 小时前
vivado处理硬件设计差分对布线极性翻转的问题
经验分享·fpga开发
XINVRY-FPGA9 小时前
XC7Z020-2CLG484I Xilinx Zynq-7000 SoC FPGA
嵌入式硬件·fpga开发·云计算·硬件工程·fpga
小眼睛FPGA9 小时前
【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程2-基于紫光FPGA 的键控流水灯实验例程
fpga开发
XMAIPC_Robot9 小时前
电力设备RK3568/RK3576+FPGA,多系统混合部署Linux+RTOS RT-THREAD,强实时性
linux·运维·fpga开发
XMAIPC_Robot9 小时前
RK3588 PLC AMP 核隔离配置 + RT‑Thread 实时优化 + FPGA 接口定义 + CODESYS 工程
人工智能·嵌入式硬件·深度学习·fpga开发