【FPGA开发】Libero demo的搭建[1] --LED bilink实现

本篇将完整的完成一个FPGA搭建的demo,我们通过FPGA来实现LED的闪烁设计,初次之外根据板卡的原理图,该流程还涉及一个上电自锁的过程,我们这个demo实现这两个功能

该文章的目的主要在实现libero使用的熟练度。

仅用于自己总结,部分图来自于:

基于SmartFusion2系列FPGA SOC的开发2——UART串口使用-CSDN博客

任务:

1. LED闪烁

2. 开机键上电自锁

1. 如何创建工程

1.1 打开软件点击

Project > New Project

输入工程名称,工程存放位置,工程偏好HDL语言类型

1.2 工程设置

点击上一步的next

工程中选择自己对应的SF2芯片,对应的速度核心电压可以筛选出自己对应的芯片类型

1.3 器件选择配置

上一步用于使用ILA(vivado动态分析仪的选项)

底下这部根据实际原理图上PLL的供电来选择

比如这里是3.3V,时钟PLL选用3.3V,因此这里选择3.3V

1.4 MCU MSS配置

不需要MCU,只是用FPGA可以选用NONE选项,若是要用到arm核部分,则这个时候要选用第三个选项。(本次因为没用到mss,因此选择none)

2. 如何使用smart design

2.1 点击create smart design 

就可以创建一个块设计模块(类比于vivado的block design)

2.2  加入ip

对于hdl代码的ip核:

先导入自己的hdl代码,之后会出现在这里

写完保存hdl代码之后不要忘记点击左上角的“Build Hierarchy” 之后才能拖进block design

对于系统内的ip核:

在这里选择对应的IP核心

2.3 引脚的连接

我最后demo的连线如下:

这里选用了系统的时钟模块和复位模块

在smart design里面右键可以生成port(input和output)

完成以上内容之后点击:

”generate component“用于生成对应IP器件

在这里要把对应的SD文件"set as root"

完成以上步骤之后:

点击综合"Synthesize"

3. 如何进行引脚约束:

3.1 如何进入引脚约束界面

综合结束之后才能操作



3.2 进行引脚约束

点击Edit按键进入引脚约束图形化界面,当然也可以直接用.pdc文件来直接实现。

之后根据原理图连接对应的引脚

我的连接如下,大家根据自己的板卡自由选择

4. 编译操作

4.1 生成比特流文件

这里预设前面都没有问题,因此可以直接点击generate bitstream进行比特流文件的生成

4.2 烧录比特流文件

连接好flash pro之后进行烧录操作,就可以等待烧录到板卡的fpga中去了

4.3 导出比特流文件

这里用于使用flash pro express烧录的情况,可以在其中选择自己需要的烧录格式

完成以上步骤就实现我们对应的led闪烁的步骤了!

5. 代码

以下附上我的verilog代码供大家参考:

///
// Company: <Name>
//
// File: led_blink.v
// File history:
//      <Revision number>: <Date>: <Comments>
//      <Revision number>: <Date>: <Comments>
//      <Revision number>: <Date>: <Comments>
//
// Description: 
//
// <Description here>
//
// Targeted device: <Family::SmartFusion2> <Die::M2S005> <Package::484 FBGA>
// Author: <Name>
//
/// 

//`timescale <time_units> / <precision>

module led_blink(
    input       i_clk,
    input       i_rst_n,
    input       i_on_off_button, 
    output wire o_led,
    output wire o_on_off
        );
    reg led;
    reg on_off;
    assign o_led = led;
    assign o_on_off = on_off;

    reg [63:0] cnt_led;
    reg [63:0] cnt_button;

//led blink
    always@(posedge i_clk or negedge i_rst_n)
    begin
        if(i_rst_n == 1'b0) begin
            led <= 'b1;
            cnt_led <= 'd0;
        end
        else begin
            if(cnt_led == 'd9999999) begin
                led <= ~led;
                cnt_led <= 'd0;
            end
            else begin
                led <= led;
                cnt_led <= cnt_led + 1'b1;
            end
        end
    end

    
//self latch
    always@(posedge i_clk or negedge i_rst_n)
    begin
        if(i_rst_n == 1'b0) begin
           on_off  <= 1'b0;
           cnt_button <= 'd0;
        end
        else begin
            if(cnt_button == 'd9999) begin
                on_off <= 1'b1;
                cnt_button <= 'd0;
            end
            else begin
               if(i_on_off_button == 1'b1) begin
                  cnt_button <= cnt_button + 1'b1;
               end
            end
        end
    end


//<statements>



endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值