• 初次拿到板子的兴奋


    今天,DE2-115终于拿到手了,按捺不住内心的兴奋,马上试验一下。

    一个简单的流水灯程序对照书本写好之后,遇到的第一个问题是如何将程序烧进芯片。不过还好,手头资料算是比较充足的。

    1.程序很简单:

    //=======================================================
    //  This code is generated by Terasic System Builder
    //=======================================================
    
    module LED_Test(
        //////////// CLOCK //////////
        CLOCK_50,
        RSTn,
        //////////// LED //////////
        LEDG,
        LEDR 
    );
    //=======================================================
    //  PORT declarations
    //=======================================================
    
    //////////// CLOCK //////////
    input                          CLOCK_50;
    input                            RSTn;
    //////////// LED //////////
    output             [8:0]        LEDG;
    output            [17:0]        LEDR;
    
    //=======================================================
    //  Structural coding
    //=======================================================
    //----1MS定时器
    
    parameter T1MS = 16'd49_999;
    reg    [15:0]    Count1;
    always@(posedge CLOCK_50 or negedge RSTn)
        if(!RSTn)
            Count1 <= 16'd0;
        else if(Count1 == T1MS)
            Count1 <= 16'd0;
        else
            Count1 <= Count1 + 1'b1;        
            
    //----1S定时器
    reg    [9:0]    Count_MS;
    
    always@(posedge CLOCK_50 or negedge RSTn)
        if(!RSTn)
            Count_MS <= 10'd0;
        else if(Count_MS == 16'd1000)
            Count_MS <= 10'd0;
        else if(Count1 == T1MS)
            Count_MS <= Count_MS + 1'b1;
            
    //----
    reg    [26:0]    rLED;
    
    always@(posedge CLOCK_50 or negedge RSTn)
        if(!RSTn)
            rLED <= 27'b0000_0000_0000_0000_0000_0000_001;
        else if(Count_MS == 16'd1000)
            begin
                if(rLED == 27'b0000_0000_0000_0000_0000_0000_000)
                    rLED <= 27'b0000_0000_0000_0000_0000_0000_001;
                else
                    rLED <= {rLED[25:0],1'b0};
            end
    
    assign LEDR = rLED[26:9];
    assign LEDG = {1'b0,rLED[7:0]};  //由于LEDG8跟它们一排LED不在同一排,所以就分出来置零好了
    
    
    endmodule

    2.仿真

    实际上在往板子上烧之前我是没有进行仿真的,不过还是要学一下仿真过程的~

    写Testbench

    http://maxim.eefocus.com/nightseas/blog/12-03/242395_7df71.html

    //模块定义
    module LED_tb();
    
    //寄存器定义
    reg clk;
    
    //顶层模块例化
    LED_Test t1
    (
        .CLOCK_50(clk),
        .RSTn(RSTn),
        .LEDG(LEDG),
        .LEDR(LEDR)
    );
    
    //激励信号
    initial begin
        clk = 0;
        forever
            #10 clk = ~clk;
    end
    
    
    endmodule

    3.引脚配置

    由于我是用DE2_115_SystemBuilder自动生成的,省去了引脚配置这一步。

    ----引脚配置,用图形界面或者.csv或者.tcl

    图形界面很简单,下面说说.csv的一般操作,

    http://www.cnblogs.com/sunev/archive/2012/03/10/2388705.html

    编写:.csv

    导入:Assignments -> Import Assignments

    下载:

    第一步:USB接上笔记本,板子上电,驱动安装——驱动路径是:Quartus_15.015.0quartusdrivers

    第二步:下载方式的选择——Jtag或AS

       第一种模式为RUN模式,需要将板上RUN/PROG开关(LCD旁)拨到RUN,是用USB-Blaster直接将sof文件烧到 Cyclone FPGA芯片,这样掉电之后就没有了,重启后需要再次烧写。

            第二种模式为AS模式,将RUN/PROG开关拨到PROG模式,然后在Qutuars下载模式设置为AS模式,选择pof文件下载,这样直接下载到EPCS64 Configure芯片中,每次复位,会根据EPCS64里面的内容重新烧写Cyclone IV芯片。   

        刚开始我的程序编译之后是没有生成.pof的,百度之后,这样设置就可以顺利生成了——Quartus => Assignment => Device => Device and Pin Options => Configuration => Use configuration device(check)

        这样板子掉电重新Reset之后里面的代码也不会变了~~~

    好了,我现在宣布,第一个实验——流水灯很成功!

    拿着板子学习跟对着书本学习相比,学习劲头果然大不相同,今天才算是真正的入了个门!

  • 相关阅读:
    editable : false与 readonly 的区别
    Ubuntu环境下使用Jupyter Notebook查找桌面.csv文档的方法
    实验01——java模拟银行ATM系统
    Wannafly挑战赛26 御坂网络
    Wannafly挑战赛29 御坂美琴(递归,模拟)
    牛客练习赛31 龙魂合一萨坎与晶石
    牛客练习赛31
    Codeforces Round #520 (Div. 2)A. A Prank
    (花里胡哨)New Game!(牛客国庆集训派对Day1)
    Educational Codeforces Round 54 (Rated for Div. 2)A. Minimizing the String(签到题)
  • 原文地址:https://www.cnblogs.com/fengyanlover/p/5020611.html
Copyright © 2020-2023  润新知