《基于“矿板”低成本学习FPGA》分享淘到的一款超高性价比xc7k325t板

文摘   2024-08-27 14:59   湖南  

一. 前言

前面我们分享了一系列淘Zynq矿板进行FPGA测试学习的文章,最近在准备移植开源的RISC-V,所以希望能找一块性价比高,资源丰富的FPGA,初步选定xilinxxc7k325t,资源足够移植risc-vlinux系统了。但是看了下xc7k325t的核心板都要一千以上了,开发板都要大几千了,买块新的开发板有点舍不得。于是乎还是坚持我们一贯勤俭持家,节约的精神,去二手网站上淘一淘,还真淘到了,某二手平台上出的比较多的SSD小海豚Memblaze pblaze3 ,用的正好是xc7k325t,最吸引人的是板子4个插座引出了全部IO, 也预留了JTAG焊盘,作为开发板使用再合适不过了。

二. 板子概览

板子是一块SSD, 用的是FPGA方案xc7k325t,板载9256MBDDR。板载SPI FLASH可以用于固化程序。有一个大电容用于掉电进行一些紧急处理。除了这些主要的IC其他主要就是供电部分了,各种DCDCLDO

大电容

SPIFLASH

卖家还送了个底板和电源

测试了下晶振,50MHz

焊接JTAG线

三. LED测试

我们焊接了JTAG排线,现在就来先新建一个工程,点个灯测试下。

3.1新建工程

File->project->New...

Next

设置工程名和路径,next

指定RTL工程,Next

选择型号xc7k325tffg900-2Next

Finish

3.2添加源码

led.v添加如下源码

module led(    input sys_clk,      //system clock 50MHZ on board    input rst_n,        //reset low active    output reg[2:0] led    //LED use of control the LED signal on board); 
reg [31:0] timer;
//==============================//cle counter : from 0 to 4 sec//==============================always @(posedge sys_clk or negedge rst_n) begin if(~rst_n) timer <= 32'd0; //when the reset signal valid,time counter clearing else if(timer == 32'd149_999_999) //4 seconds count(50M * 4 - 1 = 199_999_999) timer <= 32'd0; //count done,clearing the time counter else timer <= timer + 1'b1; //timer counter = timer counter + 1 end//==============================//LED control//==============================always @(posedge sys_clk or negedge rst_n) begin if(~rst_n) led <= 3'b111; else if(timer == 32'd49_999_999) led <= 3'b011; else if(timer == 32'd99_999_999) led <= 3'b110; else if(timer == 32'd149_999_999) led <= 3'b101; end endmodule

3.3RTL分析

Run Linter无错误

3.4引脚约束

Windows->I/O Ports显示如下对引脚配置

按如下设置引脚

Ctrl+s保存

Run Linter

3.5综合

3.6实现

综合完自动弹出实现对话框

3.6时钟约束

设置频率50MHz

点击Skip to Finish

手动编辑led.xdc文件如下

set_property PACKAGE_PIN R24 [get_ports {led[2]}]set_property PACKAGE_PIN T20 [get_ports {led[1]}]set_property PACKAGE_PIN T21 [get_ports {led[0]}]set_property PACKAGE_PIN D27 [get_ports sys_clk]set_property PACKAGE_PIN T22 [get_ports rst_n]
set_property IOSTANDARD LVCMOS18 [get_ports {led[2]}]set_property IOSTANDARD LVCMOS18 [get_ports {led[1]}]set_property IOSTANDARD LVCMOS18 [get_ports {led[0]}]set_property IOSTANDARD LVCMOS18 [get_ports sys_clk]set_property IOSTANDARD LVCMOS18 [get_ports rst_n]
create_clock -period 20.000 -name sys_clk -waveform {0.000 10.000} -add [get_ports sys_clk]

3.7生成bit文件

实现完后自动弹出生成bit文件对话框

3.8下载运行

连接设备

编程设备

选择bit文件

自动运行可以看到3LED流水点亮。

四. 总结

以上分享了淘到的xc7k325t板,进行简单的点灯测试,确认板子基本没问题。该板使用xc7k325t,资源丰富能满足大部分开发需求了,尤其是引出了所有的IOJTAG非常方便作为开发板使用,后续就是按需设计一块扩展板,然后就可以进行RISC-V的移植,玩转起来了。













































嵌入式Lee
嵌入式软硬件技术:RTOS,GUI,FS,协议栈,ARM,总线,嵌入式C,开发环境 and blablaba....多年经验分享,非硬货不发,带你扒开每一个技术背后的根本原理。
 最新文章