zoukankan      html  css  js  c++  java
  • CH04 FPGA设计Verilog基础笔记(四)

     

    VIVADO创建工程置流水灯

    1、  概述

    首先创建FPGA工程,编写Verilog代码,然后添加管脚约束,最后进行编译,将产生的bit文件下载到开发板中。本次实验,FPGA开发板断电后,bit文件就会消失。如果想要保证开发板上电后就能运行程序,则需要把bit文件打包成bin或者MCS文件,然后固化到FLASH中才可以。这个方法以后再详细说明。

    2、  硬件原理图

    3、  Verilog工程代码run_led.v

    module run_led(                              //定义输入输出变量

        input CLK_i,                                                         

        input RSTn_i,

        output reg [3:0] LED_o

        );

        reg [31:0] C0;                            //设置时间变量

        always @(posedge CLK_i)       //上升沿触发    

        if(!RSTn_i)                                 //没有复位

           begin

            LED_o <= 4'b1;                //类似于初始化,led第一位置1

            C0 <= 32'h0;                    //变量初始化C0置零

           end

         else

            begin

               if(C0 == 32'd50_000_000)                     //当C0累加到这个数时,

                    begin

                        C0<=32'h0;                           //C0清零

                        if(LED_o ==4'b1000)            //当LED只有第四位为1时       

                            LED_o<=4'b1;              //LED移位,只有第一位为1     

                        else

                            LED_o<=LED_o<<1;    //LED的1左移一位

                     end      

                else

                    begin

                        C0<=C0 + 1'b1;                   //C0累加1

                        LED_o <= LED_o;                

                     end      

            end

    endmodule               

    4、  约束文件代码fpga_pin.xdc

    create_clock -period 10.000 -name CLK_i [get_ports CLK_i]   //创建一个始终,周期为10

    set_property PACKAGE_PIN H16 [get_ports CLK_i]      //管脚约束  时钟引脚

    set_property IOSTANDARD LVCMOS33 [get_ports CLK_i]  //电平约束  LVCMOS电平标准:

                                                                                                       //所有引脚号都与原理图一一对应

    set_property PACKAGE_PIN T19 [get_ports RSTn_i]     //复位引脚

    set_property IOSTANDARD LVCMOS33 [get_ports RSTn_i]

    set_property PACKAGE_PIN J16 [get_ports {LED_o[0]}]   //led灯的配置 

    set_property PACKAGE_PIN K16 [get_ports {LED_o[1]}]

    set_property PACKAGE_PIN G15 [get_ports {LED_o[2]}]

    set_property PACKAGE_PIN H15 [get_ports {LED_o[3]}]

    set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[*]}]     //led灯电平标准

    #bit compress       //压缩

    set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]   //板卡配置电压约束

    set_property CFGBVS VCCO [current_design]   //CFGBVS管脚连接至上拉电压VCCIO(3.3V)

    set_property CONFIG_VOLTAGE 3.3 [current_design]    // //配置电压也连接至3.3V

    5、  感悟

    FPGA学习感觉根单片机学习很像,都需要读懂原理图,有一定的编程思维。C语言编程都是先寻找一个个子零件,慢慢拼凑,最后拼成一个大零件,从而实现某个功能,编程思想是从底层出发慢慢走向顶层。Verilog编程恰恰相反,它是从顶层出发,发现此时需要什么,再去寻找什么,最后把底层都找到。

  • 相关阅读:
    regsvr32 错误解决方案
    cefsharp解决闪烁
    WPF使用cefsharp 下载地址
    Winform下CefSharp的引用、配置、实例与报错排除(源码)
    cefSharp在XP下使得程序崩溃记录
    mvc3在window 7 iis7下以及 xp iis 5.1下的部署 ,asp.net MVC3无法打开项目文件E:/我们的项目/Project/HeatingMIS.Web/HeatingMIS.Web.csproj”。此安装不支持该项目类型。
    顺序程序设计
    你对linux了解多少,Linux 系统结构详解!
    算术运算符和算术表达式(优先级,结合性等)
    离散化和面元划分(可以理解为划分段)
  • 原文地址:https://www.cnblogs.com/TheFly/p/11979768.html
Copyright © 2011-2022 走看看