基础信息
- ADC中的AD_OTR引脚:
代表out of range,模拟输入超出了AD的转换范围 - 8位位宽-digital data
- 输入/输出模拟电压范围为-5V~+5V,旋钮可调
- 供电电压(+2.7V~+5.5V),建议电压3.3V
- AD芯片:3PA9280
DA芯片:3PD9708
转换速率:125MSPS(DA),32MSPS(AD) MSPS-Mega Samples Per Second
- 硬件描述
上面那个比较厚的是AD,9280,引脚带OTR,剩下就是5V、GND、D0-D7、CLK
下面是DA9708,D0-D7、CLK - rasberry pi pins
搭建思路
- 分配管脚,xdc文件get,对应连接Dx到GPIO
- 面包板连线
- 测试代码
- sin signal Analog in
- AD输入FPGA
- DA输出到模块(wire直连)
- 模拟输出,示波器对比观察
vivado board file配置
下载导入PYNQ-Z2板子的vivado配置文件(board file),创建工程
下载地址
下载后解压放到Vivado的安装路径下的data\boards\board_files
之后在创建工程选择板卡时选择即可
测试烧录
一个简单的led闪烁代码
- 时钟
PHYRSTB拉低时, Ethernet PHY (U5) 引脚为重置状态,使125MHz时钟失效。更详细信息在:xilinx官网的 “7 Series FPGAs Clocking Resources User Guide”
xdc文件中的信息也说明,PL端的时钟默认为125MHz,H16引脚
## Clock signal 125 MHz
#set_property -dict { PACKAGE_PIN H16 IOSTANDARD LVCMOS33 } [get_ports { sysclk }]; #IO_L13P_T2_MRCC_35 Sch=sysclk
#create_clock -add -name sys_clk_pin -period 8.00 -waveform {0 4} [get_ports { sysclk }];
测试用代码:
module pynq_test(
input wire sysclk, // 125MHz clock input
output reg led, // LED output
output wire clk
);
// Parameters
parameter sysclk_FREQ = 125_000_000; // 125MHz
parameter BLINK_FREQ = 2; // 2Hz
parameter COUNT_MAX = sysclk_FREQ / (2 * BLINK_FREQ); // Counter limit for 2Hz blink frequency
reg [31:0] counter = 0; // 32-bit counter
always @(posedge sysclk) begin
if (counter < COUNT_MAX) begin
counter <= counter + 1;
end else begin
counter <= 0;
led <= ~led; // Toggle LED
end
end
assign clk = sysclk ;
endmodule
测试用xdc:
## Clock signal 125 MHz
set_property -dict { PACKAGE_PIN H16 IOSTANDARD LVCMOS33 } [get_ports { sysclk }];
create_clock -add -name sys_clk_pin -period 8.00 -waveform {0 4} [get_ports { sysclk }];
##LEDs
set_property -dict { PACKAGE_PIN R14 IOSTANDARD LVCMOS33 } [get_ports { led }];
##Raspberry Digital I/O
set_property -dict { PACKAGE_PIN Y9 IOSTANDARD LVCMOS33 } [get_ports { clk }];
时钟信号波形如图,基本是个三角波,原因不详
ADDA测试
signal | pins | num |
---|---|---|
ad[0] | W9 | 37 |
ad[1] | Y8 | 35 |
ad[2] | W8 | 33 |
ad[3] | Y7 | 31 |
ad[4] | Y6 | 29 |
ad[5] | Y16 | 27 |
ad[6] | W10 | 23 |
ad[7] | V10 | 21 |
da[0] | V8 | 19 |
da[1] | U8 | 15 |
da[2] | V7 | 13 |
da[3] | U7 | 11 |
da[4] | V6 | 7 |
da[5] | W19 | 5 |
da[6] | W18 | 3 |
da[7] | Y9 | 40 |
da_clk | A20 | 38 |
ad_clk | B19 | 36 |