凡亿专栏 | 【干货】实验教程:控制LED灯——紫光盘古系列高性能入门级1K2K开发板(1)
【干货】实验教程:控制LED灯——紫光盘古系列高性能入门级1K2K开发板(1)

    本期将为大家揭秘紫光盘古系列高性能入门级1K2K开发板。1K2K开发板以紫光Compact系列PGC1KG-LPG100/PGC2KG-LPG100器件为核心,满足低功耗、低成本、小尺寸需求。

49b4f1786287880141081ae8302f25.jpg

小编将为大家陆续推出1K2K实验教程,本期介绍控制LED灯。控制LED灯1.1 实验目的: 实现对多LED灯的控制;1.2 实验要求: 控制8个LED以1s的周期闪烁(0.5s亮,0.5s灭)

1.3 实验原理

d4ebd9f1ca56f9332e09c04490e6fa.jpg

    通常的时,分,秒的计时进位大家应该不陌生;1小时=60分钟=3600秒,当时针转动1小时,秒针跳动3600次;那在数字电路中的时钟信号也是有固定的节奏的,这种节奏的开始到结束的时间,我们通常称之为周期(T)。

ee6f468b1de4c4007d8766e1028c53.jpg

    在数字系统中通常关注到时钟的频率,那频率与周期的关系如下:
    MES2KG板卡上有一个40MHz的晶振提供时钟给到PGC2KG;实验分析:    控制LED亮灭需要控制IO输出的高低电平即可(高电平点亮,低电平熄灭),原理图如下:

7a8fe96e05fdcfb1f760eedb60b9ba.jpg


    控制LED周期性的维持0.5s亮,0.5s灭,需要控制IO输出0.5s高电平,0.5s低电平周期变化,如下图波形:

eb36a100865b966ff58616791d0770.jpg


    外部输入时钟为40MHz时钟周期为25ns(在verilog设计中的计数器的计时原理基本上是一致的,确认输入时钟周期,目标计时时间后可得到计数器的计数值到达多少后可得到计时宽度); 0.5s = 20000000*25ns = 20000000 ×;    IO输出状态只有两种:1或0;我们可以使用一个计数器,计数满20000000个时钟周期时将IO状态进行翻转,即可完成每0.5S输出状态跳转,即LED灯会以0.5S的间隔亮灭变化;1.4 实验源码设计(完整源码查看demo源文件)1.4.1 文件头设计    在module之前添加文件头,文件头中包含信息有:公司,作者,时间,设计名,工程名,模块名,目标器件,EDA工具(版本),模块描述,版本描述(修改描述)等信息;以及仿真时间单位定义;

bcde61423671b2521ddb1fa7f8a6ca.jpg


`timescale 1ns / 1ps 表示仿真精度是1ns,显示精度是1ps;`define UD #1 定义UD表示#1;#1仅仿真有效,表示延时一个仿真精度,结合上一条语句表示延时1ns;1.4.2 设计module1.4.2.1  创建module,确定输入输出信号

65ef77868845bfde3664b44eaf55b4.jpg

    此段代码是标准的module创建的模型,module创建时需要确认输入输出信号并定义好位宽,之后在对module进行具体的逻辑设计;管脚与管脚之间间隔用“,”,最后一个管脚不用间隔符号;    创建module时需要定义输入输出信号;本实验输入时钟和复位即可,输出是控制LED的亮灭,MES2KG板卡上共有8个LED,故而输出8bit位宽的信号;1.4.2.2 设计一个计数器;    单个状态计数20000000,1个亮灭周期的计数即为40000000 = 26’h2625A00;所以计数器的位宽为26位即可,此处请结合数字电路中的同步计数器的工作原理分析;

fb8b2c12e05b715d721badcb45dca8.jpg

    当计数器计数到26’d19999999时,计数周期包含了从0~26’d19999999的时钟周期,故而总时长时26‘d20000000 × ;硬件输入时钟为40MHz,所以此计数器的技术周期是0.5s;1.4.2.3 led显示状态控制    在指定的时间刻度上对LED的状态进行变更,以达到控制LED规律的亮灭的目的;    led_light_cnt的计时周期为0.5s,故在led_light_cnt上取一个点来变更LED的显示状态即可完成每隔0.5s LED显示发生变化;由于LED亮和灭只有两个状态,在赋值处理上将寄存器取反即可得到对应的从亮到灭变化(或从灭到亮的变化);

4fc96782e2a692b9416f76e6fa2061.jpg

1.4.3 完整的Module(不含注释)

ba39569160471add1c0085b145e9ae.jpg

054232fed4a2621ca1ce7f92e8dc58.jpg

1.4.4 硬件管脚分配    MES2KG的LED和CLK与FPGA的IO连接部分的原理图如下(在工程中做物理约束时需要结合原理图的FPGA管脚分配进行约束):

8a22f9fabb606e37acd225632a5c46.jpg

3319820d68eb15c634185dcd7cc669.jpg

    复位设计是低电平有效,而MES2KG板卡上的按键按下时为低电平,松开为高电平,可用按键输入来做复位信号;使用RSET做为复位按键即可;              

13e12e01e7a9cae0eecf4ae22a3c0c.jpg

1.5 实验步骤1.5.1 打开PDS软件,创建工程Step1:打开PDS软件,单击New Project

c6b6a5fa9c97170778442a1ab25a58.png

Step2:单击NEXT

4c33d60c6a0bca3550eef222960110.png

Step3:创建名为led_light的工程到对应的文件目录,之后单击Next

888ecaf11661ad2f501df6bc749cb3.png

Step4:选择RTL project,单击Next

dc3d4d213d8df407c3e29b3286d73c.png

Step5:单击Next(也可添加.v文件)

ee4f61b85acb32e2f125b16ed178e2.png

Step6:单击Next

8f3cb42ff32d4de4cc890ef6b987f2.png

Step7:单击Next

f2c0481e02d25acfdad8446f0aef04.png

Step8:选择器件系列、型号、封装、速率、综合工具,之后单击Next

7e2cae2ec37a4543a1ebf40afe2389.png

Step9:单击Finish,完成工程创建

7590676141d5c4d348ea2cab0e180c.png

1.5.2 添加设计文件PDS软件界面如下图:

0a3f4b9da8521528920556d045d312.png

双击Designs,将前面设计的module新建到文件中,或者将前面编辑好的verilog文件添加到工程中:

bbb2b2dca27ef01bf9b57c095320d9.png

添加文件到工程:在窗口中点击Add Files,选择添加文件到工程;

a12b5cbce943278f3676428722d852.png

新建文件到工程:1)在窗口中点击Create File;

4a9cad1de244c92b00df99ca8d47fe.png

2)选择Verilog Design File,文件名和module名一致,默认路径,点击OK;

dc883d16badc54ee2e9f7dc982160d.png

3)点击OK;

d04cb8efa055b2e267e9c481ce5272.png

3)点击Cancel;

12a135bb312384844c53781989fb11.png

4)默认打开新建文件,将前面设计的module复制进去,

8fbbe7095bc56dca69ffc0924643b9.png

5)点击保存,新建文件完成

31c41ef44d540cae110aa24cffdad5.png

1.5.3 编译双击Compile或右击选择Run,编译完成后如下;

c8c13482e215a3a7f1bc2c1425cb37.png

1.5.4 工程约束点击Tools选择User Constraint Editor(Timing and Logic)或者点击工具栏图标User Constraint Editor(Timing and Logic) 选择Pre Synthesize UCE,如下图所示。

abef8639fa8be1fa081d66b8d31873.png


Tools 下的User Constraint Editor(Timing and Logic)

f8250177bb5cf723e7a458220188a0.png


工具栏User Constraint Editor(Timing and Logic)图标1.5.4.1  时钟约束打开UCE后,选择Timing Constraints后选择Create Clock添加基准时钟,基准时钟一般是通过输入port输入用户涉及的板上时钟。

8131b944b46536772df82a165ea7e5.png

在弹窗中对时钟命名,关联时钟管脚,添加时钟参数,点击OK会创建一条时钟约束,Reset重置该页面。创建完成如下图所示:

9b41deb971619c04265258a8fa1799.png

1.5.4.2  物理约束

打开UCE后,选择Device后选择I/O,根据原理图编辑IO的分配。

2c31ecfd6e3b66d1b1a3ff8c6c3410.png

54f4e322a0d4735741969d1672648c.png

编辑好IO分配后,点击保存,完成约束。1.6 生成位流文件并下载双击Generate Bitstream或右击选择Run,生成二进制位流文件。下载位流文件请参考《PDS快速使用手册》2.8下载位流文件1.7 实验现象8个LED灯同时亮和灭,亮和灭之间间隔时间为0.5s。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论