社区导航

 
查看: 2594|回复: 7

[FPGA开发] 从零开始学FPGA我的第三个实验(记录一下)

[复制链接]

401

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2016-7-15 20:15:35 | 显示全部楼层 |阅读模式
这是我前面做的实验 实验一和实验二 计划每天一个
下面是第三个实验计数器实验
实现让LED灯每50ms翻转一次

原理是连接50MHZ的晶振 50MHZ=50_000_000HZ 时间是  1/50_000_000秒=20ns
所以计数的次数CNT=50_000_000/20=25_000_000次因为计数是从0开始计数的所以只需要计数到24_999_999即可
开始时序逻辑电路了
posedge 等待CLK上升沿
negedge 等待RST下降沿
always之间是并行的,它是一直在检测触发条件,always内部是顺序执行的。
下面是代码
  1. module counter(Clk50M,Rst_n,led);
  2.         input Clk50M;//系统时钟,50M=20ns
  3.         input Rst_n;//全局复位,低电平复位
  4.         output reg led;//led输出
  5.         reg [24:0]cnt;//500ms=500_000_000ns/20ns = 25000 000
  6. //计数器的进程       
  7.         always@(posedge Clk50M or negedge Rst_n)//在系统时钟是上升沿时候或者是复位的下降沿
  8.                 if(Rst_n == 1'b0)//如果发生了复位则计数器清零
  9.                         cnt <= 25'd0;
  10.       else if(cnt == 25'd24_999_999)//如果计数到了24 999 999时候则计数器清零
  11.                         cnt <= 25'd0;
  12.            else
  13.                         cnt <= cnt +1'b1;//否则计数器自加1       
  14.                        
  15. //led的进程                       
  16.         always@(posedge Clk50M or negedge Rst_n)//在系统时钟是上升沿时候或者是复位的下降沿
  17.                 if(Rst_n == 1'b0)
  18.                         led <= 1'b0;
  19.                 else if(cnt == 25'd24_999_999)
  20.                         led <= ~led;
  21.                 else
  22.                         led <= led;
  23.                
  24.        
  25. endmodule       
  26.        
复制代码
然后是testbench
使用宏定义方便代码修改
  1. `timescale 1ns/1ns//仿真时间步进和精度
  2. `define clock_period 20
  3. module counter_tb;
  4.   reg clk;
  5.   reg rst_n;
  6.   
  7.   wire led;
  8.   

  9. counter ct0(
  10.                         .Clk50M(clk),
  11.                         .Rst_n(rst_n),
  12.                         .led(led)
  13.                         );
  14.                        
  15.         initial clk =1;
  16.         always #(`clock_period/2) clk =~clk;
  17.        
  18.         initial begin
  19.                 rst_n = 1'b0;
  20.                 #(`clock_period*200);
  21.                 rst_n = 1'b1;
  22.                 #2000000000;
  23.                 $stop;
  24.                
  25.        
  26.         end


  27. endmodule
复制代码
然后是RTL的仿真实验
RTL仿真波形.png
符合设计
然后是门级仿真
门级仿真.png
然后是下载到板子上
板子上1.jpg 板子上2.jpg
一闪一闪的时间估计对的上。

此帖出自Altera SoC论坛

评分

1

查看全部评分



回复

使用道具 举报

8505

TA的帖子

128

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2016-7-25 10:45:27 | 显示全部楼层
汇总贴在此:
从零开始学FPGA——by ihalin
http://bbs.eeworld.com.cn/forum. ... &fromuid=536508


回复

使用道具 举报

55

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2016-7-15 21:10:16 | 显示全部楼层
支持一下


回复

使用道具 举报

6

TA的帖子

1

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-7-16 16:41:43 | 显示全部楼层
点个赞


回复

使用道具 举报

2

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-8-7 21:09:55 | 显示全部楼层
点个赞,我学习的时候没有楼主这么认真


回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-8-15 16:02:26 | 显示全部楼层
加油1


回复

使用道具 举报

10

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-1-12 16:11:51 | 显示全部楼层


回复

使用道具 举报

1

TA的帖子

1

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-10-2 13:42:10 | 显示全部楼层
你好,可以发一下这个开发板的资料吗?


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2018-12-19 11:52 , Processed in 0.275961 second(s), 20 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表