4月4清明假期修改了一天的project依旧实现不了,RTL视图只能出来一个模块,另外两个设计的模块出不来,管脚更是没有办法配置。是代码问题吗?我改了改,改了改,依旧不行。而另一个project里我用同样的代码文件(.v),同样的BDF,就成功做出来了。我不禁怀疑,真是玄学?于是又经过4月6号的一天摸索,开始另一个实验,依旧是改bug改到再也不想看见那块板子和那个屏幕。晚饭后回到实验室,我把实验室电脑上做出来的project打开,对比笔记本上没有做出来的project,突然想起好像是要把哪个设为顶层文件来着,这一对比,恍然大悟!BDF应该设为顶层文件的!

在做出来的project里,我误打误撞把BDF设置成顶层文件(然而我自己并没有意识到),就比较幸运地成功了。而后面的几个project里我都是把(.v)文件设置成了顶层文件。
经过此番折腾,我终于深刻记住了把BDF设置成顶层文件这句话,果然是实践出真知。在紧接着的实验中,同样的代码文件造成一个出结果一个不出结果的灵异现象果真没有再发生,OK,搞定!
正如师哥所说:硬件开发中,设计和敲代码的工作量和开发时间仅占三成,剩下七成都是debug。此次所犯的低级错误也让我收获了一些debug的技能,锻炼了一番强大的心理耐受力。
昨儿朋友说:*我们可能是bug的制造机!*哈哈哈,这实在是太形象了!


写一个今早完成的小实验:
实验题目:让四个数码管稳定显示“E”“E”“1”“1”
所用设备:terasic DE0
所用软件:quartus II 9.1
实验过程
1、( .v)文件程序

module testthree(OUT1,OUT2,OUT3,OUT4);
output [7-1:0] OUT1;
output [7-1:0] OUT2;
output [7-1:0] OUT3;
output [7-1:0] OUT4;reg [7-1:0] OUT1;
reg [7-1:0] OUT2;
reg [7-1:0] OUT3;
reg [7-1:0] OUT4;always @(*) beginOUT1 = 7'b 1111001;OUT2 = 7'b 1111001;OUT3 = 7'b 0000110;OUT4 = 7'b 0000110;
end
endmodule

2、BDF

3、RTL视图

4、管脚配置

5、下载到板子上

很快就做好了(๑´0`๑)


根据这个程序,只需要修改数码管对应的代码,就可以显示任何你想显示的数字,如下图显示的“1234”。

注意“0”为“亮”,“1”为“灭”,代码顺序为OUT = 7’b 6543210(数字代表对应的管子,每个管子有0、 1两个逻辑值),是倒着写的。下图是position and index of each segment in a 7-segment display。因为我的程序中没有用到DP,所以我只定义了7个输出。
如果要用DP,可以设置output [8-1:0] OUT; 对应的代码顺序就是OUT = 8’b DP6543210


实验二(1):让七段LED发光管以1HZ的频率闪烁起来,从全1到全E来回切换
实验软件:quartus II 9.1
实验板子:terasic DE0
实验过程
1、(.v)verilog HDL代码

module clk(CLK   ,   // clockCNTVAL,   // counter valueOV    );  // overflow
input CLK;
output [32-1:0] CNTVAL;
output OV;
parameter MAX_VAL = 50_000_000;
reg [32-1:0] CNTVAL;
reg OV;always @ (posedge CLK) beginif(CNTVAL >= MAX_VAL)CNTVAL <= 0;elseCNTVAL <= CNTVAL + 1'b1;
endalways @ (CNTVAL) beginif(CNTVAL == MAX_VAL)OV = 1'b1;elseOV = 1'b0;
end
endmodule
///
module cnt_en_0to1(CLK   ,   // clockCNTVAL,   // counter valueEN    ,);
input CLK;
input EN;
output CNTVAL;reg CNTVAL;
reg OV;always @ (posedge CLK) beginif(EN) begin  // work enableif(CNTVAL >= 1)CNTVAL <= 0;elseCNTVAL <= CNTVAL + 1'b1;endelseCNTVAL <= CNTVAL ;  // hold same value
end
endmodule
///
module dec_1to7(IN  ,OUT1,OUT2,OUT3,OUT4);
input  IN;
output [7-1:0] OUT1 ;
output [7-1:0] OUT2 ;
output [7-1:0] OUT3 ;
output [7-1:0] OUT4 ;reg [7-1:0] OUT1 ;
reg [7-1:0] OUT2 ;
reg [7-1:0] OUT3 ;
reg [7-1:0] OUT4 ;always @ (IN) begincase(IN)1'b0: OUT1 = 7'b 1111001;1'b1: OUT1 = 7'b 0000110;endcasecase(IN)1'b0: OUT2 = 7'b 1111001;1'b1: OUT2 = 7'b 0000110;endcasecase(IN)1'b0: OUT3 = 7'b 1111001;1'b1: OUT3 = 7'b 0000110;endcasecase(IN)1'b0: OUT4 = 7'b 1111001;1'b1: OUT4 = 7'b 0000110;endcase
end
endmodule

程序中posedge clk意思是clk上升沿触发(与此对应negedge clk意思是clk下降沿触发),两者都是边沿触发
2、BDF

3、RTL视图

4、管脚配置

5、实验结果
可以看到板子上“1”和“E”以1HZ频率,即1秒的周期不断跳跃。


6、实验总结
本实验最关键的地方就是parameter MAX_VAL值的设置。因为时钟模块(labtwo)的代码逻辑就是:当计数到parameter MAX_VAL时,输出OV为1,否则OV为0。在这里我们把parameter MAX_VAL的值设置为50M,这样一来经过变换,时钟频率就由输入的50MHZ变慢为输出的1HZ。
我最开始设置的parameter MAX_VAL = 25M,因为我觉得在第二个模块0-1转换时速度会继续下降一倍,那样才会最终呈现1HZ的频率,实验证明并不是这样。所以cnt_en_0to1模块并不具备延时功能。
实验二(2):增加闪烁频率,使用实验来测定,到什么频率时,你分不清1和E,此时你看到的是什么图样?
答:当参数MAX_VAL = 500_000时,频率为100HZ时,即周期为100ms,分不清1和E,此时看到的是8888。

FPGA|记得把BDF设为顶层文件啊!!!相关推荐

  1. FPGA如何将.bdf文件转换成.v文件

    BDF文件一般是原理图作为我们的顶层文件,但是有时候我们需要将.bdf文件装换成.v文件.按照下图的方法进行操作. 首先需要选中要转化的.bdf文件->File->Create/Updat ...

  2. FPGA自学笔记(二)仿真文件tb

    FPGA自学笔记(二)仿真文件tb 一.创建文件 创建 simulation sources ,命名为 tb_模块名. 二.代码 1.定义reg,wire 因为要测试一个模块,所以该模块的input应 ...

  3. FPGA开发技巧:Modelsim仿真.do文件详细解析 原创 特权同学

    FPGA开发技巧:Modelsim仿真.do文件详细解析 原创 特权同学 FPGA快乐学习 以<FPGA边码边学 视频教程>"Lesson06 分频计数器设计"中的si ...

  4. 【数集项目之 MCDF】(五) 最终整合:MCDF顶层文件

      根据前面几章的介绍,我们已经大致完成了MCDF的子模块设计和波形测试,分别是control_regisyer.slave_FIFO.arbiter.formatter.   当然,由于握手机制等一 ...

  5. Quartus如何生成顶层文件里的小模块,解决波形图无法导入输入输出

    生成模块: 有这么个模块叫SRAM, 就可以在顶层文件里找到了, 解决波形图无法导入输入输出: 统一名字: 文件夹名字和.qpf文件一致和顶层文件名字一样,还和波形图文件一样

  6. 【FPGA实验0】Quartus建立工程文件以及仿真

    FPGA的第一课,学习Quartus编程运行仿真烧录的这一个流程,以一个十位的计数器为例. 芯片商家:ALTERA 编程软件:Quartus II 试验箱上的芯片型号:EP4CE6E22C8N 目录 ...

  7. ISE如何查看顶层文件(原语)

    1.打开ISE 第一步 第二步 第三步 :根据自己FPGA的类型进行选择,选择后里面有分模块表述,可以找到自己需要查看的部分

  8. log4cplus的RollingFileAppender设为多文件失败的原因

    原因:程序运行的权限不够. 底层执行_wrename失败,_errno返回错误码是13(Permission denied). 解决办法是以管理员权限启动. 类似的文件丢失.更名失败.文件访问失败都有 ...

  9. 一起了解Windows——把WPS设为.doc文件的默认打开应用

    打开"设置"-->选择"应用"-->选择"默认应用"-->拉到最后选择"按应用设置默认值"--> ...

最新文章

  1. node.js Centos安装
  2. html如何使文本变为粗体_javascript – 如何使用节点和.createElement(“b”)使文本变为粗体?...
  3. Linux网络编程---I/O复用模型之select
  4. apache shiro版本查看_深入学习SpringBoot(四):springboot整合shiro
  5. SinGAN实现的单图动画,ICCV 2019 Best Paper
  6. 易到追债贾跃亭 乐视回应:对方无耻甩锅
  7. 【数据结构笔记31】Dijkstra算法例题:旅游规划(双权重),以及其他推广
  8. HDU1234 开门人和关门人(解法二)【废除!!!】
  9. numpy—np.repeat、np.roll
  10. 发布传参_Taro 1.2.9 发布,BAT 小程序、H5 与 RN 端统一框架
  11. 简述写基础java小游戏一般思路。
  12. 2021年影响会计人员的十大信息技术榜单出炉,RPA再次登榜
  13. vue项目添加emoji表情
  14. separating axis test——分离轴测试算法的实现
  15. 安科瑞电力监控系统在教学演示中的应用
  16. 解决谷歌浏览器Chrome不能播放央视新闻视频的问题
  17. win10更新后开不了机_win10开机关机正常,重启特别慢问题排查
  18. 台积电全球员工薪酬中位数约46万,CEO约899万;苹果上调日本的 iPhone 售价 ;Vim 9.0 发布|极客头条...
  19. 让tableView的每个section的headerview随tableview一起滚动
  20. 当时的我很淘气openeim003

热门文章

  1. GPFS 并行文件系统
  2. Dreamweaver8卡死打开初始化(缓存重建)失败的解决办法
  3. 《思考致富》带给我们致富的“捷径”
  4. 数据分析:预测汽车违约风险
  5. 领克全球化战略扩展至中东;万豪国际集团2023年将在全球开设超过35家奢华酒店 | 美通企业日报...
  6. project顶行显示项目名称
  7. 群晖5.2php核心设置_求救!群晖dsm系统如何才能找到并设置php.ini文件
  8. 美团青龙教程(2022.11.9最新版)附脚本
  9. QQ空间相册脸部识别
  10. raf是什么格式?raf格式用什么软件打开?raf格式怎么转换成jpg