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

2008-8-1 17:48 6879 16 19 分类: FPGA/CPLD
昨天拿到的开发板,配置为: 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文件了。


文章评论3条评论)

登录后参与讨论

用户203017 2009-7-7 00:53

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 这段程序好像没有移位???.... 要移位应该用拼接运算号吧...... 初学者,我感到挺困惑的..

walnutcy_696810119 2008-8-2 00:48

近期正打算向你们好好学习呢,

ilove314_323192455 2008-8-2 00:01

加油啊,革命尚未成功,同志还需努力呵呵
相关推荐阅读
walnutcy_696810119 2012-11-21 08:37
Linux下使用smartCOM调试串口
在Windows下的串口调试一直使用sscom,在Linux下只找到一个cutecom,用了几次,很不喜欢,就着手开发了一款自己的串口调试工具,smartCOM。 smartCOM介绍:http...
walnutcy_696810119 2012-03-29 18:12
【博客大赛】原创--测量基础:什么是测量
写在正文之前: 适逢EDNChina搞活动,而我本人也算在测量业工作,就一起作下笔记吧。若有错误,请大家一起斧正。笔者写本文一方面是梳理知识,另一方面也希望与大家探讨有关测量的知识、应用等,希...
walnutcy_696810119 2011-12-20 18:29
GLONASS 15年来,首次实现24颗星在轨可用
  EDN的博客改版后,不太好用,在SINA重开一个,不过重点改为关注GNSS行业新闻 http://blog.sina.com.cn/s/blog_7420cd1701012en9....
walnutcy_696810119 2011-12-20 17:49
逆向工程第一步:通信协议分析
工程中常有这样的事,想分析下其他知名公司产品中的通信协议,以便生产设计兼容产品。 1) 逆向工程,首先要了解产品,知己知彼,百战不怠;     去年受命想仿一款GARMIN的导航盒,但无法...
walnutcy_696810119 2011-11-14 11:30
通用代码调试方法 (Keil, VCC)
调试代码一般需要定位问题,这里给出一个解决方案, 一般的编译器均支持这些宏指令。   #define DEBUG_WALT_1113     1 extern void log_t...
我要评论
3
16
关闭 站长推荐上一条 /2 下一条