本帖最后由 Zhao_kar 于 2023-12-5 23:10 编辑
【Tang Primer25K Dock】第一节——开箱和基础测试
备注:事先声明,高云我之前一直有用,近期比赛也是用过软件,这一期就先从下面四个开始
一、开箱
这个没什么好说的,收到之后就是一个袋子和一个盒子,里面分别是
- 25K一个
- typec线
- HDMI
- TF
- 数码管
- 两个——LED模块
- 拨码开关模块
二、环境搭建
1、软件下载(我已经有了就不实际演示了)
首先是去官网下载安装包,这里有两个版本,一个教育版一个专业版,我的是专业版,专业版需要发送邮件跟官方申请那个许可证,教育是不用的,但是我没用过教育版,具体差别不是很清楚,目前我知道的是IP权限不一样,如图
2、下载完之后就正常安装就行了,然后是界面,第一个界面左上角是工程文件,右边是编辑栏,第一个界面下边,切换一下到界面2,有综合和引脚约束和布局布线,还有下载器。
3、其实安装软件很简单,界面介绍我就不说太多了,官方有视频和文档,建议自己去熟悉熟悉,然后接下来是资料收集,如官方原理图和官方例程
(以下,前期准备完成,开始测试板子)
三、例程的测试
1、打开下载好后的文件,以pmod_digitalTube-2bit为例。
- PS:如果你想看看别人的开源文件,可以直接点开:pmod_digitalTube-2bit.gprj
- 如果你想直接下载文件,直接在你最开始建立自己的工程部分打开下载器,把TangPrimer-25K-example-main\pmod_digitalTube-2bit\impl\pnr里的fs下载进去就行。
- 建议先直接点开熟悉熟悉
- 如下图,该文件已经完成,如果没有,点图里面红线的综合和布局布线生成fs文件。
- 从上到下为综合,布局布线,下载
2、打开下载器,并且选择srammode 和选择文件,如下图。
- 我这里写文章已经没有连接25k了,打开下载器后应该会有个弹窗,那个无所谓
- 进入下图后,左边是扫描,也就是识别设备,两个选项,选25A
- 点击那个栏,会得到下图小框,选择sram,然后选择文件,选择fs
- 完成之后,右上角那个,就是下载,点他,然后就可以看到文件下载成功。
3、结果演示,因为是别人的例程,建议看看github上的描述,这边放个演示视频
四、自己写一个流水灯
1、原理图和设计
- 首先去看原理图,了解一些必要信息,比如三个PMOD的引脚,还有时钟线(引脚文件和截图放后面,不说怎么找了)
- 然后根据流水灯需求,如果直接做组合,基本上不用想,这里需要时序,所以需要时钟线,分频出1个0.5s的时钟
- 具体分析原理见代码及其解释
//确认输入输出,时钟输入,复位按键一个,输出是PMOD上的led,所以8个
module led_water
(
input clk,
input rst,
output reg [7:0]led
);
//因为50M时钟,计数到0.5s,需要25_000_000次cnt,十进制二进制算一下,也就是28位
//计算cnt过程,1/50_000_000hz,为计数1次时间,乘上cnt,得到所需时间
//所以cnt就等于时间乘50_000_000,所以0.5乘,得一半
//所以用下面reg存
reg [27:0] cnt;
//时序逻辑,时钟上升沿和复位信号下降沿
always @(posedge clk or negedge rst)
begin
if(!rst)//rst低电平复位,按下低电平
cnt <= 28'd0;//计数器清零
else if (cnt <28'd25_000_000)//小于计数值,持续加1
cnt <= cnt + 1'd1;
else
cnt <= 28'd0;//否则清零
end
always @(posedge clk or negedge rst)
begin
if(!rst)//rst低电平时复位,即为按下按键。
led <= 8'b1111_1110;//1为灭,也就是按下复位键,只有最后一个灯亮
else if (cnt == 28'd25_000_000)//若计数满一次,则改变led状态一次(不一定按照这个方法来)
led[7:0] <= {led[6:0],led[7]};//移位操作,把高位移到第位,也就是左移,呈现效果为低位led到高一位。
else
led <= led;//否则保持原状态。
end
endmodule
2、引脚约束(PS,这个板子上面直接有引脚,这个还是很方便的)
- 可以自己写cst文件,也可也直接用fool planner去进行交互
- 下图为引脚约束
附带cst文件code
//Copyright (C)2014-2023 Gowin Semiconductor Corporation.
//All rights reserved.
//File Title: Physical Constraints file
//GOWIN Version: V1.9.9 Beta-5
//Part Number: GW5A-LV25MG121NES
//Device: GW5A-25
//Device Version: A
//Created Time: Tue 12 05 22:07:52 2023
IO_LOC "led[7]" C10;
IO_PORT "led[7]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_LOC "led[6]" C11;
IO_PORT "led[6]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_LOC "led[5]" B10;
IO_PORT "led[5]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_LOC "led[4]" B11;
IO_PORT "led[4]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_LOC "led[3]" D10;
IO_PORT "led[3]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_LOC "led[2]" D11;
IO_PORT "led[2]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_LOC "led[1]" G10;
IO_PORT "led[1]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_LOC "led[0]" G11;
IO_PORT "led[0]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;
IO_LOC "rst" F5;
IO_PORT "rst" PULL_MODE=NONE DRIVE=OFF BANK_VCCIO=3.3;
IO_LOC "clk" E2;
IO_PORT "clk" PULL_MODE=NONE DRIVE=OFF BANK_VCCIO=3.3;
3、打开下载器,具体操作不说了,前面讲了,把文件下进去
4、得到如下视频,可见按下复位时,只有最右边led亮,不按下时,正常工作。
自建流水灯
最后总结:本次主要是开箱25K的测试,然后简单测试了一个流水灯,官方例程也测试了一下,软件的搭建和资料的收集也写了,就当开个头吧,后续会根据自己的测评申请内容推进进度。