码迷,mamicode.com
首页 > 其他好文 > 详细

初次拿到板子的兴奋

时间:2015-12-04 22:52:07      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:

今天,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 = 16d49_999;
reg    [15:0]    Count1;
always@(posedge CLOCK_50 or negedge RSTn)
    if(!RSTn)
        Count1 <= 16d0;
    else if(Count1 == T1MS)
        Count1 <= 16d0;
    else
        Count1 <= Count1 + 1b1;        
        
//----1S定时器
reg    [9:0]    Count_MS;

always@(posedge CLOCK_50 or negedge RSTn)
    if(!RSTn)
        Count_MS <= 10d0;
    else if(Count_MS == 16d1000)
        Count_MS <= 10d0;
    else if(Count1 == T1MS)
        Count_MS <= Count_MS + 1b1;
        
//----
reg    [26:0]    rLED;

always@(posedge CLOCK_50 or negedge RSTn)
    if(!RSTn)
        rLED <= 27b0000_0000_0000_0000_0000_0000_001;
    else if(Count_MS == 16d1000)
        begin
            if(rLED == 27b0000_0000_0000_0000_0000_0000_000)
                rLED <= 27b0000_0000_0000_0000_0000_0000_001;
            else
                rLED <= {rLED[25:0],1b0};
        end

assign LEDR = rLED[26:9];
assign LEDG = {1b0,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.0\15.0\quartus\drivers

第二步:下载方式的选择——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之后里面的代码也不会变了~~~

 

 

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

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

 

初次拿到板子的兴奋

标签:

原文地址:http://www.cnblogs.com/fengyanlover/p/5020611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!