实验目的:
1. 熟练掌握EDA开发工具和开发流程
2. 复习数字逻辑设计实现方法
3. 扩展优化逻辑实验基本模块
4. 优化计算机系统实现的辅助模块
5. 了解计算机硬件系统将中到的最基本模块
实验设备:
1. 计算机(Intel Core i5以上,4GB内存以上)系统
2. NEXYS A7开发板
3. Vivado 2017.4及以上开发工具
实验目标及任务:
1. VIVADO工具学习
目标:熟悉VIVADO设计环境,掌握EDA工具
任务:利用VIVADO完成water_LED的全流程设计
2. 自定义模块设计学习
目标:自定义模块设计,熟悉模块化流程
任务:利用VIVADO完成多选器(MUX) 的设计和封装
3. 基本逻辑模块的原理学习、Xilinx IP 生成
目标:熟悉多选器、逻辑运算、数据扩展等模块的设计 原理,掌握存储器的IP生成方法
任务1:熟悉基本模块功能,在VIVADO环境中采用 verilog进行基本模块的设计和仿真验证;
任务2:学习利用VIVADO生成Xilinx 库中的IP,以存储 器ROM、RAM为例,并完成其存储内容的初始化
4. 利用自定义模块构建实验平台
目标:了解实验板的资源情况,熟悉RTL TOP-DOWN的 设计流程,完成实验平台muxctrl的构建。 任务:采用verilog编码的设计方法,完成多选器控制LED 的设计并利用NEXYS A7实验板进行硬件验证。
实验内容:
1.流水灯的实现:
如图,为NEXYS-A7上的16个并行LED流水灯原理图, 所有的阴极(负极)接 地(共阴极),当阳极接高电平时,点亮。
LED流水灯源程序, 输入时钟( 100MHZ),输入复位(低电平有效),输出 LED灯驱动(高电平有效)。设置中间计数器C0每计数100000000翻转 一次,产生1HZ(1S)的时钟来更新一次LED 点亮状态(若不延缓以前的100M快时钟, 则会影响流水灯的观察)。通过左移一位高电平的方式逐个点亮LED, 形成流水 。
其对应的顶层文件为:
`timescale 1ns / 1ps
module Water_LED(
input CLK_i,
input RSTn_i,
output reg [3:0]LED_o
);
reg [31:0]C0;
always @(posedge CLK_i)
if(!RSTn_i) begin
LED_o <= 4'b1;
C0 <= 32'h0;
end
else begin
if(C0 == 32'd100_000_000) begin
C0 <= 32'h0;