4261|7

356

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

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

 这是我前面做的实验 实验一和实验二 计划每天一个
下面是第三个实验计数器实验
实现让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的仿真实验

符合设计
然后是门级仿真

然后是下载到板子上

一闪一闪的时间估计对的上。

此帖出自Altera SoC论坛

最新回复

你好,可以发一下这个开发板的资料吗?  详情 回复 发表于 2018-10-2 13:42

赞赏

1

查看全部赞赏

点赞 关注(1)
 
 

回复
举报

1万

帖子

2853

TA的资源

管理员

来自 2楼
 
汇总贴在此:
从零开始学FPGA——by ihalin
https://bbs.eeworld.com.cn/forum ... 5881&fromuid=536508
此帖出自Altera SoC论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
支持一下
此帖出自Altera SoC论坛
 
 
 

回复

6

帖子

1

TA的资源

一粒金砂(初级)

4
 
点个赞
此帖出自Altera SoC论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

5
 
点个赞,我学习的时候没有楼主这么认真
此帖出自Altera SoC论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 
加油1
此帖出自Altera SoC论坛
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

7
 
此帖出自Altera SoC论坛
 
 
 

回复

1

帖子

1

TA的资源

一粒金砂(初级)

8
 
你好,可以发一下这个开发板的资料吗?
此帖出自Altera SoC论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表