Verilog基础入门——Vivado流水灯工程(四)(实验报告)
今日进行了数字逻辑实验,完成了一个最简单的FPGA设计,即流水灯设计。
此处记录我们的指导文件以及实验报告,同时记录遇到的问题及解决方法。
一、vivado工程源文件编写
counter.v文件
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 2020/10/08 12:01:18
// Design Name:
// Module Name: counter
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////// module counter(
input clk,
input rst,
output clk_bps
);
reg[13:0]cnt_first,cnt_second;
always@(posedge clk or posedge rst)
if(rst)
cnt_first<=14'd0;
else if (cnt_first == 14'd10000)
cnt_first<=14'd0;
else cnt_first <=cnt_first + 1'b1;
always@(posedge clk or posedge rst)
if(rst)
cnt_second <= 14'd0;
else if (cnt_second == 14'd10000)
cnt_second<=14'd0;
else if (cnt_first == 14'd10000)
cnt_second <= cnt_second + 1'b1;
assign clk_bps = cnt_second == 14'd10000 ? 1'b1 : 1'b0;
endmodule
flash_led_ctl.v
`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// module flash_led_ctl(
input clk,
input rst,
input dir,
input clk_bps,
output reg[15:0]led
);
always @( posedge clk or posedge rst )
if( rst )
led <= 16'h8000;
else
case( dir )
1'b0: //从左向右
if( clk_bps )
if( led != 16'd1 )
led <= led >> 1'b1;
else
led <= 16'h8000;
1'b1: //从右向左
if( clk_bps )
if( led != 16'h8000 )
led <= led << 1'b1;
else
led <= 16'd1;
endcase
endmodule
flash_top_led.v
`timescale 1ns / 1ps module flash_led_top(
input clk,
input rst_n,
input sw0,
output [15:0]led
);
wire clk_bps;
wire rst;
assign rst = ~rst_n; counter counter(
.clk( clk ),
.rst( rst ),
.clk_bps( clk_bps )
);
flash_led_ctl flash_led_ctl(
.clk( clk ),
.rst( rst ),
.dir( sw0 ),
.clk_bps( clk_bps ),
.led( led )
);
endmodule
flash_top_led_tb.v
module flash_led_top_tb;
reg clk,rst,sw0;
wire [15:0] led;
initial begin
clk = 1'b0;
rst = 1'b1;
sw0 = 1'b0;
#10 rst = 1'b0;
#10 rst = 1'b1;
#1000000000 //6ms后改变位移方向
#1000000000
#1000000000
#1000000000
#1000000000
#1000000000
sw0 = 1'b1;
end
always #5 clk <= ~clk;
flash_led_top flash_led_top(
.clk( clk ),
.rst_n( rst ),
.sw0( sw0 ),
.led( led )
);
endmodule
二、工程流程设计
给出流水灯仿真结果截图,对波形进行简要解释:
1、 初始条件下,流水灯从led[15]开始向右移动
2、 6ms后移动至led10亮,改变位移方向向左移动。
给出板子运行结果照片,以及你的操作过程:
灯向左移动
按下sw0后反向
counter模块的作用是什么?
计时模块
三、实验总结
遇到的问题
1、仿真时波形与预期不相同,排查结果后发现是”Set as top”设置错误。
【在编写源文件的过程中,应该注意到flash_led_top.v文件是应该放到最上方的】
2、无法生成bit流文件,参照csdn上的博客,添加tcl文件代码如下
【set_property
SEVERITY {Warning} [get_drc_checks NSTD-1]
set_property
SEVERITY {Warning} [get_drc_checks UCIO-1]
set_property
SEVERITY {Warning} [get_drc_checks RTSTAT-1]】
右键click左下方的generate bitstream——添加tcl文件。
体会
多查,网上有很多的解决方案,不断排查问题才能得到正确解决方案。
Verilog基础入门——Vivado流水灯工程(四)(实验报告)的更多相关文章
- Verilog基础入门——Vivado工程创建(三)
Verilog基础入门--Vivado工程创建(三) Vivado是Verilog语言的一个集成环境,目前使用的版本为英文版,简单介绍一下在Vivado中创建一个工程并写入源文件 [配置] win10 ...
- 实验四实验报告————Android基础开发
实验四实验报告----Android基础开发 任务一 关于R类 关于apk文件 实验成果 任务二 活动声明周期 实验成果 任务三 关于PendingIntent类 实验成果 任务四 关于布局 实验成果 ...
- 20145120 《Java程序设计》实验四实验报告
20145120 <Java程序设计>实验四实验报告 实验名称:Android开发基础 实验目的与要求: 用SDK成功编译出HelloWorld 实验内容.步骤 PSP 步骤 耗时 百分比 ...
- 20145328 《Java程序设计》实验四实验报告
20145328 <Java程序设计>实验四实验报告 实验名称 Andoid开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android ...
- 20145227 《Java程序设计》实验四实验报告
20145227 <Java程序设计>实验四实验报告 实验内容 安装Andriod Studio并配置软件 使用Andriod Studio软件实现Hello World的小程序 实验步骤 ...
- 20145315 《Java程序设计》实验四实验报告
20145315 <Java程序设计>实验四实验报告 第一步 安装Android Studio 按教程安装即可,安装过程中需要配置JAVA_HOME环境变量为jdk安装目录. 第二步 在I ...
- # 20155337 《Android程序设计》实验四实验报告
20155337 <Android程序设计>实验四实验报告 实验一 实验内容 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPU ...
- 20145314郑凯杰 《Java程序设计》实验四 实验报告
20145314郑凯杰 <Java程序设计>实验四 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...
- 《Java程序设计》实验四 实验报告
实验四 Android开发基础 实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 ...
随机推荐
- 重学Ajax
什么是Ajax Asynchronous JavaScript and xml 异步的JavaScript和XML 只是一种js的应用,在无需重新加载整个网页的情况下实现部分网页的数据更新的技术.减少 ...
- Java高并发系列——检视阅读
Java高并发系列--检视阅读 参考 java高并发系列 liaoxuefeng Java教程 CompletableFuture AQS原理没讲,需要找资料补充. JUC中常见的集合原来没讲,比如C ...
- Effective Objective-C 的读书笔记
本文主要是摘录了 <Effective Objective-C 2.0>一书中提到的编写高质量iOS 代码的几个方法. 1 熟悉Objective -C 1.1 OC 起源 OC 为C语言 ...
- [LeetCode]671. 二叉树中第二小的节点(递归)
题目 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值. 给出这样的一个二叉树,你需要输出所有 ...
- 安装Linux的CentOS操作系统 - 初学者系列 - 学习者系列文章
Linux系统对于一些熟悉Windows操作系统的用户来说可能比较陌生,但是它也是一种多用户.多任务的操作系统,现在也发展成为了多种版本的操作系统了.如果想对该系统进行学习,请下载这个学习文档:htt ...
- ES6重度学习 demo实例
let 与 const // 并非真正的常量 // const 的本质: const 定义的变量并非常量,并非不可变, // 它定义了一个常量引用一个值.使用 const 定义的对象或者数组,其实是可 ...
- JVM的整体结构
整个jvm的运行流程图如上所示,首先需要进行加载class文件,然后使用类加载子系统将class翻译解析导入内存,在内存中分别导入到对应的运行时数据区,然后执行引擎开始执行,对于需要的数据在对应的区域 ...
- python自动保存百度网盘资源,一定要看
觉得有帮助的别忘了关注一下知识图谱与大数据公众号 开始 在上一文中,我们保存了百度云盘的地址和提取码,但是这种分享链接很容易被屏蔽,最好的做法就是保存资源到自己的网盘,不过采集的链接有上万个,人肉保存 ...
- Spring Cloud实战 | 最终篇:Spring Cloud Gateway+Spring Security OAuth2集成统一认证授权平台下实现注销使JWT失效方案
一. 前言 在上一篇文章介绍 youlai-mall 项目中,通过整合Spring Cloud Gateway.Spring Security OAuth2.JWT等技术实现了微服务下统一认证授权平台 ...
- JVM内存模型不再是秘密
前言 上篇文章我们一起了解了jvm虚拟机类的加载机制,而且是以一种纯大白话进行的一场闲聊,相信小伙伴们应该印象深刻,感兴趣的小伙伴可以重温一下上一篇文章大白话谈JVM的类加载机制. 当jvm加载了类后 ...