数电自主设计实验报告——Verilog秒表

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名班级学号

实验日期节次教师签字成绩

基于BASYS2开发板的

记忆秒表设计

一、实验目的

1、熟悉基于Verilog HDL语言输入方式的数字电路的设计方法。

2、掌握基于FPGA的设计流程。

3、熟悉BASYS2开发板的使用方法。

4、熟悉Xilinx ISE软件的使用方法。

5、培养自己独立自主设计并完成实验的能力。

二、总体设计方案或技术路线

本实验利用BASYS2开发板的已有资源来进行设计实验,并用Xilinx ISE软件来编写和综合Verilog代码。总体设计方案是设计一个带有记忆功能的秒表。具体而言,该秒表通过BASYS2开发板的50M的时钟进行分频计时,最大计时时间为99.99s,用4位数码管动态显示计时时间,除了有基本的运行、暂停及复位清空功能,还有存储当前时间和查看存储时间的功能。

三、实验电路图

BASYS2开发板原理图--数码管

板上数码管为4位共阳极数码管,每段为低电平点亮,位选接了三极管增大驱动电流,同时为非逻辑,所以位选信号为低电平有效。

BASYS2开发板原理图--按键

本实验用到了两个按键BTN0和BTN1,BTN0为复位按键,对应程序的clear信号,BTN1为存储按键,对应程序的btn[1]信号,按一次该按键数据存储一次,下一次按下时这一次存的数据将被替换掉。

BASYS2开发板原理图--开关

本实验用到了两个开关SW7和SW1,SW7为运行、暂停开关,对应程序的sw[0]信号,开关打到上方为运行,下方为暂停,SW1为显示切换开关,对应程序的sw[1]信号,在计时暂停的前提下,将开关打到上方显示出存储的时间数据。

四、仪器设备名称、型号和技术指标

硬件:BASYS2开发板

软件:Xilinx ISE(编程)、Digilent Adept(下载)

五、程序流程图

六、程序源代码

/////////////////////////////////////////////////////////程序文件

`timescale 1ns / 1ps

//////////////////////////////////////////////////////////////////////////////////

// Company:

// Engineer:

//

// Create Date: 15:45:01 11/26/2014

// Design Name:

// Module Name: miaobiao

// Project Name:

// Target Devices:

// Tool versions:

// Description:

//

// Dependencies:

//

// Revision:

// Revision 0.01 - File Created

// Additional Comments:

//

///////////////////////////////////////////////////////////秒表的顶层模块

module miaobiao(

input wire clk,///////////////////////////////开发板系统时钟50MHz

input wire[1:0] btn,////////////////////////两个按键:[0]复位和[1]存时间

input wire[1:0] sw,/////////////////////////两个开关:[0]运行/暂停和[1]显示存储时间output wire[7:0] smg,/////////////////////数码管的8个段选信号

output wire[3:0] smg_an/////////////////数码管的4个位选信号

);

wire clear;

assign clear=btn[0];////////////////////////////////////将复位按键信号传给clear变量

wire clk_1k;

clkdiv #(50000) m0(clk,clear,clk_1k);//将50MHz进行5万分频输出1kHz时钟信号wire[15:0]number;

timer m1(sw[0]&clk_1k,clear,number);///////////计时器模块,输出当前时间数据wire[15:0]num_save;

save m2(clk,clear,btn[1],number,num_save);//////按键按下存储当前时间

wire[15:0]num_display;

/////////////////////////////////////////////////////////////////////////////根据开关状态选择显示内容choose_4num m3(sw,number,num_save,num_display);

display m4(clk_1k,clear,num_display,smg,smg_an);///////将数字送给数码管显示endmodule

///////////////////////////////////////////////////////////////////////////////4选1数据选择器模块module choose_4num(

input wire[1:0]sw,

input wire[15:0]number,

input wire[15:0]num_save,

output reg[15:0]num_display

相关文档
最新文档