今日进行了数字逻辑实验,完成了一个最简单的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流水灯工程(四)(实验报告)的更多相关文章

  1. Verilog基础入门——Vivado工程创建(三)

    Verilog基础入门--Vivado工程创建(三) Vivado是Verilog语言的一个集成环境,目前使用的版本为英文版,简单介绍一下在Vivado中创建一个工程并写入源文件 [配置] win10 ...

  2. 实验四实验报告————Android基础开发

    实验四实验报告----Android基础开发 任务一 关于R类 关于apk文件 实验成果 任务二 活动声明周期 实验成果 任务三 关于PendingIntent类 实验成果 任务四 关于布局 实验成果 ...

  3. 20145120 《Java程序设计》实验四实验报告

    20145120 <Java程序设计>实验四实验报告 实验名称:Android开发基础 实验目的与要求: 用SDK成功编译出HelloWorld 实验内容.步骤 PSP 步骤 耗时 百分比 ...

  4. 20145328 《Java程序设计》实验四实验报告

    20145328 <Java程序设计>实验四实验报告 实验名称 Andoid开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android ...

  5. 20145227 《Java程序设计》实验四实验报告

    20145227 <Java程序设计>实验四实验报告 实验内容 安装Andriod Studio并配置软件 使用Andriod Studio软件实现Hello World的小程序 实验步骤 ...

  6. 20145315 《Java程序设计》实验四实验报告

    20145315 <Java程序设计>实验四实验报告 第一步 安装Android Studio 按教程安装即可,安装过程中需要配置JAVA_HOME环境变量为jdk安装目录. 第二步 在I ...

  7. # 20155337 《Android程序设计》实验四实验报告

    20155337 <Android程序设计>实验四实验报告 实验一 实验内容 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPU ...

  8. 20145314郑凯杰 《Java程序设计》实验四 实验报告

    20145314郑凯杰 <Java程序设计>实验四 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...

  9. 《Java程序设计》实验四 实验报告

    实验四 Android开发基础 实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 ...

随机推荐

  1. vue.js 的安装

    包含vue的脚手架的安装. 1,到项目目录下输入 cnpm i -g vue-cli 2,安装完毕后咱们看看.输入 vue 即可看到vue的安装情况. 3,输入 vue list 即可看到框架的选择 ...

  2. git多账号使用

    1 背 景 在公司上班的员工会同时拥有两个git账号, 一个是公司内部的, 仅允许工作时使用; 另一个是个人的, 常用于日常的学习记录. 此时, 面临的问题是如何在一台电脑(客户端)上正常使用两个账号 ...

  3. Playbook使用,编写YAML

    YAML是什么? YAML是一个可读性高.用来表达数据序列的格式语言 YAML:YAML Ain't a Markup Language YAML以数据为中心,重点描述数据的关系和结构 YAML的格式 ...

  4. 国产化之路-麒麟V10操作系统安装.net core 3.1 sdk

    随着芯片国产化,操作系统国产化,软件国产化的声浪越来越高,公司也已经把开发项目国产化提上了日程,最近搞来了台长城的国产化电脑主机,用来搞试验,安装的是麒麟V10的操作系统,国产化折腾之路就此开始,用的 ...

  5. 使用Spring Boot+MyBatis框架做查询操作

    一.在你建立的工程下创建 Module 选择Spring initializr创建. 二.在Type处选择: Maven Project(项目的构建工具) 三.创建依赖时勾上web,mybatis,m ...

  6. Druid实现数据库连接用户密码加密

    使用ConfigFilter ConfigFilter的作用包括: 从配置文件中读取配置 从远程http文件中读取配置 为数据库密码提供加密功能 1 配置ConfigFilter 1.1 配置文件从本 ...

  7. 每天一个dos命令-del.

    比较常用的选项: /F 强制删除只读文件. /Q 安静模式.删除全局通配符时,不要求确认 文件名或者路径中有空格,需要使用引号包围 常用的实例:del  /q/f   c:\Securitylog\S ...

  8. Spring Boot学习(三)解析 Spring Boot 项目

    一.解析 pom.xml 文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=& ...

  9. Spring学习(四)IOC详解

    一.简介 概念:控制反转是一种通过描述(在 Java 中可以是 XML 或者注解)并通过第三方(Spring)去产生或获取特定对象的方式.(被动创建) 优势: ① 降低对象之间的耦合 ② 我们不需要理 ...

  10. 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字

    084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...