walnutcy

终于在FPGA开发板上跑通了第一个样例----流水灯 (原创)

0
阅读(2062)


昨天拿到的开发板,配置为: XC3S400 + XCF02S + CY68013A,就是传说的那个USB+FPGA的核心板,底板没找到(都是问一个朋友借的,买的话太贵了),  上面有一排LED灯,就先来跑跑流水灯吧,

verilog 源码如下:
module LedWater(clk, rst, dataout);
input clk;
input rst;
output [7:0] dataout;
reg  [7:0] dataout;
reg [22:0] cnt;
always@(posedge clk or negedge rst)
begin
    if(!rst) begin
        cnt<=0;
        dataout<=8'b1110_0111;//0->Led on, 1->Led off
     end
    else begin
        cnt<=cnt+1;
        if(cnt==23'h7fffff) begin
            dataout[2:0]<=dataout[3:1];
            dataout[3]<=dataout[0];
            dataout[6:4]<=dataout[7:5];
            dataout[7]<=dataout[4];
         end
     end
end
endmodule
PIN脚下配置的约束文件如下:
#PACE: Start of PACE I/O Pin Assignments
NET "clk"  LOC = "P80" | IOSTANDARD = LVCMOS33  | IOBDELAY = NONE ;
NET "dataout[0]"  LOC = "P15" | IOSTANDARD = LVCMOS33  | SLEW = SLOW ;
NET "dataout[1]"  LOC = "P16" | IOSTANDARD = LVCMOS33  | SLEW = SLOW ;
NET "dataout[2]"  LOC = "P18" | IOSTANDARD = LVCMOS33  | SLEW = SLOW ;
NET "dataout[3]"  LOC = "P19" | IOSTANDARD = LVCMOS33  | SLEW = SLOW ;
NET "dataout[4]"  LOC = "P20" | IOSTANDARD = LVCMOS33  | SLEW = SLOW ;
NET "dataout[5]"  LOC = "P21" | IOSTANDARD = LVCMOS33  | SLEW = SLOW ;
NET "dataout[6]"  LOC = "P22" | IOSTANDARD = LVCMOS33  | SLEW = SLOW ;
NET "dataout[7]"  LOC = "P24" | IOSTANDARD = LVCMOS33  | SLEW = SLOW ;
NET "rst"  LOC = "P161" | IOSTANDARD = LVCMOS33  | IOBDELAY = NONE ;
有了这两个文件,就可以直接生成bit文件了,
再用bit文件通过iMPACT来生成MCS文件,最后把MCS文件下载到xcf02s即可,
// 最后这两步说起来很简单,实际却花了不少时间,(没人在旁边指导啊,全是一个在那查资料,摸索,所以当那几个小灯在那闪啊闪的时候,可兴奋了。(各位高手不要笑噢,咱也是新手嘛,你说这时能不激动吗?)
由bit --> MCS文件的过程是:
打开iMPACT.exe,然后File/New, Create a New Project -> OK,
然后在弹出的界面上选择Prepare a PROM file -> next,就采用默认值,但把生成的文件名和路径填好,否则待会不知道生成到哪去了,嘻嘻,
下一个界面就是设置你所采用的配置IC,以便生成对应大小的文件,
我的这里就选xcf02s,-> Add ->next ->finish.
然后就根据提示选择要下载的bit文件,最后点operation/generate file...,就可以得到我们想要的MCS文件了。