[原创] 【Tang Primer25K Dock】第一节——开箱和基础测试(流水灯)

Zhao_kar   2023-12-5 23:10 楼主

【Tang Primer25K Dock】第一节——开箱和基础测试

备注:事先声明,高云我之前一直有用,近期比赛也是用过软件,这一期就先从下面四个开始

  • 开箱
  • 环境搭建
  • 例程测试
  • 自己写一个流水灯

一、开箱

这个没什么好说的,收到之后就是一个袋子和一个盒子,里面分别是

  • 25K一个
  • typec线
  • HDMI
  • TF
  • 数码管
  • 两个——LED模块
  • 拨码开关模块
开箱图.jpg
二、环境搭建
1、软件下载(我已经有了就不实际演示了)
首先是去官网下载安装包,这里有两个版本,一个教育版一个专业版,我的是专业版,专业版需要发送邮件跟官方申请那个许可证,教育是不用的,但是我没用过教育版,具体差别不是很清楚,目前我知道的是IP权限不一样,如图
云源.png
2、下载完之后就正常安装就行了,然后是界面,第一个界面左上角是工程文件,右边是编辑栏,第一个界面下边,切换一下到界面2,有综合和引脚约束和布局布线,还有下载器。
主界面1.png
主界面2.png

3、其实安装软件很简单,界面介绍我就不说太多了,官方有视频和文档,建议自己去熟悉熟悉,然后接下来是资料收集,如官方原理图和官方例程

(以下,前期准备完成,开始测试板子)

原理图.png
github.png

三、例程的测试

1、打开下载好后的文件,以pmod_digitalTube-2bit为例。

  • PS:如果你想看看别人的开源文件,可以直接点开:pmod_digitalTube-2bit.gprj
  • 如果你想直接下载文件,直接在你最开始建立自己的工程部分打开下载器,把TangPrimer-25K-example-main\pmod_digitalTube-2bit\impl\pnr里的fs下载进去就行。
  • 建议先直接点开熟悉熟悉
  • 如下图,该文件已经完成,如果没有,点图里面红线的综合和布局布线生成fs文件。
  • 从上到下为综合,布局布线,下载
布局布线图.png
2、打开下载器,并且选择srammode 和选择文件,如下图。
  • 我这里写文章已经没有连接25k了,打开下载器后应该会有个弹窗,那个无所谓
  • 进入下图后,左边是扫描,也就是识别设备,两个选项,选25A
  • 点击那个栏,会得到下图小框,选择sram,然后选择文件,选择fs
  • 完成之后,右上角那个,就是下载,点他,然后就可以看到文件下载成功。
下载.png
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去进行交互
  • 下图为引脚约束
引脚约束.png

附带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的测试,然后简单测试了一个流水灯,官方例程也测试了一下,软件的搭建和资料的收集也写了,就当开个头吧,后续会根据自己的测评申请内容推进进度。

本帖最后由 Zhao_kar 于 2023-12-5 23:10 编辑

回复评论 (1)

有一个地方忘记说了,不同的芯片可能会有限制,比如138k就得用最新的云源,因为我的是最新的,所以测试25k没什么问题,但是25k规定了什么版本的建议看看资料,我这边也给忘了
点赞  2023-12-13 11:56
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复