立即注册 登录
逆天PCB论坛 返回首页

云中子的个人空间 https://bbs.ntpcb.com/?150426 [收藏] [复制] [RSS]

日志

Vivado FPAG入门学习之流水灯

已有 27 次阅读2025-2-7 15:48 |个人分类:FPGA学习

从2023年4月份开始就做FPGA硬件,对于程序七窍通了六窍,一窍不通。通过昨天将Vivado2018.3安装完成之后,根据CSDN中方法,写了一遍程序,发现是错误的以后,下班以后问了一下网友,得到帮助,今天已经搞定。下面我将如何使用的方法进行记录。
一、建立Vivado工程
在安装完Vivado2018.3之后,在桌面上找到Vivado图标,单击Create project,就会弹出New Project 然后单击NEXT,进入到Project Name(1.将工程文件命名,2.设置工程文件保存路径),设置完成之后,单击NEXT。进入到Project Type,选择RTL project,其他保持默认。单击NEXT,进入到add Sources(这里我们暂时不用管)继续单击NEXT,进入add Constraints(暂时不用管),继续单击NEXT,进入到Default Part,在这里我们选择相应的FPGA的型号,我用的是XC7A35TFFG484-2,-2表示的速率等级(查速率等级可以去看FPGA选型手册)。使用Search功能可以搜索型号完成后,单击NEXT,进入到New Project summary,单击finish。工程建立完成。
二、添加功能代码
在PROJECT MANAGER中单击Add source,进入到Add Sources中选择Add or Create design Sources,然后单击NEXT,进入到Create design Sources界面中,选择Create file(如果使用NOTE++编写好了的文件可以选择add files),输入文件名称(RUN_LED)然后单击OK,在reate design Sources界面中单击finish,在define modu中单击OK。弹出的界面中选择OK。在Sources中双击文件名进入到工作区。功能代码如下:
module flowing_light(
    input clk,
    input rst,
    output[15:0] led
  );
    reg[23:0] cnt_reg;
    reg[15:0] light_reg;
    always@(posedge clk)
        begin
            if(!rst)
            cnt_reg <=0;
            else
            cnt_reg <=cnt_reg+1;
            end
     always@(posedge clk)
        begin
            if(!rst)
            light_reg <=16'h0001;
            else if(cnt_reg == 24'hffffff)
            begin
            if(light_reg == 16'h8000)
                light_reg <=16'h0001;
                else
                light_reg <=light_reg<<1;
            end
          end
assign led = light_reg;
endmodule
备注:记得使用ctrl+s保存代码
三、添加仿真代码
在PROJECT MANAGER中单击Add source,进入到Add Sources中选择Add or Create simulation Sources,然后单击NEXT,进入到Create design Sources界面中,选择Create file(如果使用NOTE++编写好了的文件可以选择add files),输入文件名称(test_LED)然后单击OK,在reate design Sources界面中单击finish,在define modu中单击OK。弹出的界面中选择OK。在simulation Sources下sim_1中双击文件名进入到工作区。功能代码如下:
`timescale 1ns / 1ps//建议保留

module test_tb();
    reg clk;
    reg rst;
    wire[3:0] led;
    flowing_light u0(
        .clk(clk),
        .rst(rst),
        .led(led));
    parameter PERIOD =10;
    always begin
        clk =1'b0;
        #(PERIOD/2)clk=1'b1;
        #(PERIOD/2);
    end
    initial begin
        clk =1'b0;
        rst =1'b0;
        #100;
        rst =1'b1;
        #100;
        rst =1'b0;
        #100;
        rst =1'b1;
    end    
endmodule
备注:记得ctrl+S保存代码
四、生成功能仿真波形
在simulation下单击Run simulation 会出现Run Behavioral simulation(单击),在对话框中选择YES,等待几秒钟,就可以得到仿真波形了。
五、总结
1.设计的工程中难免会有语法错误,可以在Log中找到具体的问题。
2.建立功能代码文件和仿真文件的步骤是相同的,区别在选择一个是功能,另一个选择仿真。
3.由于没有开发板,只做到这里的记录。
云中子笔
记于:乙巳年戊寅月丁未日戊申时

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
返回顶部