您当前的位置: 首页 > 

MangataTS

暂无认证

  • 0浏览

    0关注

    423博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

FPGA流水灯程序

MangataTS 发布时间:2022-06-14 23:48:12 ,浏览量:0

一、目标

做一个基于XILINX-Castwise Z7其中一个LED 模块的流水灯程序,具体的模块型号好像是 xc7z020clg400-1

二、过程 2.1 创建工程

在这里插入图片描述 然后随便取个名字

在这里插入图片描述 接着三个都直接next 跳过就行,然后就到了这里选择一下型号:xc7z020clg400-1 ,如果你的模块型号是其他的话就根据自己的来

在这里插入图片描述 然后选择finish

2.2 程序编写

然后就来到了工程界面: 在这里插入图片描述 然后点击这个加号,新增源文件 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 然后随便去一个名字,这个是创建代码文件 在这里插入图片描述 然后finish 即可 在这里插入图片描述 这里我们新增四个output端口和一个input 端口就行,当然你也可以根据自己的情况增加

在这里插入图片描述

然后点击 OK,此时我们多了一个.v文件,我们双击一下就能进行编辑了 在这里插入图片描述 在这里插入图片描述 这里我们想实现流水灯,我们发现二进制本身就是一个天然的流水灯,于是我们可以定义一个 4 4 4 位宽的reg变量loc_led,然后我们通过位运算,将其本身的四个位不断的点亮熄灭即可,又由于这里数据溢出就是一个天然的取模过程,于是我们可以不断的给我们的loc_led 加一就行

然后定时器的话可以通过一个reg 变量计数上升沿触发的次数,到了频率的一半后就立即清空,这就是相当于每隔 0.5 s 0.5s 0.5s 就变化一次,就达到了定时器的效果

于是不难得到如下代码:

`timescale 1ns / 1ps
//
// Company: 
// Engineer: Mangata
// 
// Create Date: 2022/06/14 22:58:04
// Design Name: 
// Module Name: led_work
// Project Name: led_work
// Target Devices: xc7z020clg400-1
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module led_work(
    input clik,
    output led1,
    output led2,
    output led3,
    output led4
    );
    reg [3:0] loc_led=0;
    reg [27:0] timecount=0;
    assign led1 = loc_led&1;
    assign led2 = (loc_led>>1)&1;
    assign led3 = (loc_led>>2)&1;
    assign led4 = (loc_led>>3)&1;
//外部时钟输入 50Mhz 输入到 U18
always @(posedge clik)//clik上升沿触发
    begin
    timecount             
关注
打赏
1665836431
查看更多评论
0.0412s