FPGA实验指导书Verilog HDL语言(包含源程序代码)
Verilog HDL实验报告
HDL实验报告专业电子科学与技术姓名学号指导老师1 实验一Modelsim仿真软件的使用1.1 实验目的(1)熟悉Modelsim 软件;(2)掌握Modelsim 软件的编译、仿真方法;(3)熟练运用Modelsim 软件进行HDL 程序设计开发。
1.2 实验步骤(1)学习使用Modelsim软件;(2)分析原理及功能;(3)用Verilog HDL编写程序;(4)编写测试程序进行仿真;(4)观察波形,分析仿真结果是否正确。
1.3 实验内容用Verilog HDL 程序实现一个异或门,Modelsim 仿真,观察效果。
1.4.1 程序module my_xor(ina,inb,out);input ina,inb;output out;assign out=ina^inb;endmodulemodule t_xor;reg ina,inb;wire out;initialbeginina=1'b0;forever #20 ina=~ina;endinitialbegininb=1'b0;forever #10 inb=~inb;endmy_xor tt(.ina(ina),.inb(inb),.out(out));endmodule2 实验二简单组合电路设计2.1 实验目的(1)掌握基于Modelsim 的数字电路设计方法;(2)熟练掌握HDL 程序的不同实现方法2.2 实验步骤(1)分析原理及功能;(2)根据原理用Verilog HDL编写程序;(3)编写测试程序进行仿真;(4)观察波形,分析仿真结果是否正确。
2.3 实验内容设计一个三人表决器(高电平表示通过) ,实验内容如下:(1)三个人,一个主裁判,两个副裁判;(2)规则:只要主裁判同意,输出结果为通过;否则,按少数服从多数原则决定是否通过。
使用Verilog HDL 程序实现上述实验内容,并使用modelsim 仿真(要求:至少使用两种方法实现上述实验内容和testbench)。
基于Verilog HDL的FPGA程序(智能洗衣机)
华中科技大学电子线路课程设计题目:智能洗衣机院系:控制科学与工程系班级:自动化100X班姓名:联系方式:fanjunchao1991@指导老师:目录一题目分析。
1二系统流程图.。
2三主要模块介绍.。
5四各按键功能.。
6 五仿真波形.。
7 六实验总结。
8 七附录。
9一:题目分析本次课程设计要求以Verilog HDL硬件描述语言为基础,以DE2开发板为工具,编写智能洗衣机的模拟程序。
首先,我在熟悉题目要求的前提下,将题目要求划分为以下几个小的项目,每个项目尽量用单独的模块实现其功能:①洗衣过程的转换:控制洗衣过程在每个过程对应的状态机之间转换,用control.v模块实现。
②洗衣时间的显示:通过直接调用上学期编写的24小时智能时钟程序的计时模块,并用总时间减去已用时间得到剩余时间,用led_show.v实现。
本程序的特色:①led灯表示水位:通过一定的算法,实现用led灯的亮灭表示水位。
Led依次点亮表示注水过程,相反,表示排水和甩干过程。
②1602 LCD液晶屏:用LCD显示所有操作步骤和过程,包括选择模式,当前洗衣模式和状态,洗衣完毕等。
这些过程都是用LCD液晶屏具体显示。
③按键使用和去抖:因为要使用按键进行模式的选择,所以我用软件去抖的方式实现按键按动时的去抖。
④暂停键模拟断电保护:设计了一个暂停键,模拟真实情况中的断电保护。
当暂停时模拟现实中的断电;暂停结束模拟现实中的重新上电,程序从断点继续运行。
二:系统流程图MODE 1 OR MODE 2 OR MODE 3:MODE 4MODE 5流程图说明:第一个为总的控制系统的流程图,后面三个为总流程图中,每种模式的详细流程图。
三:主要模块介绍module my_start:顶层模块,调用下层模块。
module HZ_1:分频模块,通过10分频和5分频将50Mhz分频成为1hz。
module control:控制模块,控制洗衣模式状态机的转换。
Verilog HDL硬件描述语言实验报告
Verilog HDL实验报告学院:应用科学学院班级:电科13-2班姓名:学号:实验一组合逻辑电路设计(1)实验目的(1)熟悉FPGA设计流程;(2)熟悉DE2开发板的基本元件使用(开关、发光二极管);(3)学习基本组合逻辑元件的Verilog HDL设计以及实现(数据选择器);(4)掌握连续赋值语句使用;实验内容本实验的目的是学习如何连接一个简单的外部输入、输出器件到FPGA 芯片以及如何在FPGA器件上实现逻辑电路控制简单外部器件。
考虑使用DE2开发板上拨动开关SW17-0(toggle Switch)作为电路的输入。
使用发光二极管(Light Emitt-ing Diodes,LEDs)和7段显示数码管(7-segment Display)作为电路的输出。
第1部分连续赋值语句步骤1、新建Quartus II工程,选择Cyclone II EP2C35F672C6作为目标芯片,该芯片是DE2开发板上的FPGA芯片;2、编写Verilog HDL代码加入到Quaruts II工程;3、引脚分配,并编译工程该工程;4、将编译好的电路下载到FPGA器件。
扳动拨动开关观察相应的发光二极管显示,验证电路功能是否正确;代码module part1(input wire[2:0]SW,output wire LEDR);wire r_g,s_g,qa,qb;and u1(r_g, SW[0], SW[1]);and u2(s_g, SW[1], SW[2]);nor u3(qa, r_g, qb);nor u4(qb, qa, s_g);assign LEDR = qa;endmodule第2部分简单的数据选择器步骤1 .新建Quartus II工程;2.在工程中加入8位宽的2选1数据选择器Verilog HDL代码。
使用DE2开发板上的SW17作为输入s,开关SW7-0作为输入X,SW15-8作为输入Y。
Verilog HDL 实验报告
Verilog实验报告班级:学号:姓名:实验1 :用 Verilog HDL 程序实现直通线1 实验要求:(1) 编写一位直通线的 Veirlog HDL 程序.(2) 编写配套的测试基准.(3) 通过 QuartusII 编译下载到目标 FPGA器件中进行验证.(4) 建议用模式 52 试验程序:module wl(in,out);input in;output out;wire out;assign out=in;endmodule3 测试基准:`include “wl.v”module wl_tb;reg in_tb;wire out_tb;initialbeginin_tb =0;#100 in_tb =1;#130 in_tb =0;endendmodule4 仿真图形:实验2 :用 Verilog HDL 程序实现一位四选一多路选择器1实验要求:(1) 编写一位四选一多路选择器的 Veirlog HDL 程序.(2) 编写配套的测试基准.(3) 通过 QuartusII 编译下载到目标 FPGA器件中进行验证.(4)建议用模式 52 试验程序:module mux4_to_1 (out,i0,i1,i2,i3,s1,s0);output out;input i0,i1,i2,i3;input s1, s0;reg out;always @ (s1 or s0 or i0 or i1 or i2 or i3)begincase ({s1, s0})2'b00: out=i0;2'b01: out=i1;2'b10: out=i2;2'b11: out=i3;default: out=1'bx;endcaseendendmodule3 测试基准:`include "mux4_to_1.v"module mux4_to_1_tb1;reg ain,bin,cin,din;reg[1:0] select;reg clock;wire outw;initialbeginain=0;bin=0;cin=0;din=0;select=2'b00;clock=0;endalways #50 clock=~clock;always @(posedge clock)begin#1 ain={$random} %2;#3 bin={$random} %2;#5 cin={$random} %2;#7 din={$random} %2;endalways #1000 select[0]=!select[0];always #2000 select[1]=!select[1];mux4_to_1 m(.out(outw),.i0(ain),.i1(bin),.i2(cin),.i3(din),.s1(select[1]),.s0(select[0])); endmodule4 仿真图形:实验3:用 Verilog HDL 程序实现十进制计数器1实验要求:(1) 编写十进制计数器的 Veirlog HDL 程序. 有清零端与进位端, 进位端出在输出为 9 时为高电平.(2) 编写配套的测试基准.(3) 通过 QuartusII 编译下载到目标 FPGA器件中进行验证.(4) 自行选择合适的模式2 实验程序:module counter_10c (Q, clock, clear, ov);output [3:0] Q;output ov;input clock, clear;reg [3:0] Q;reg ov;initial Q=4'b0000;always @ (posedge clear or negedge clock)beginif (clear)Q<=4'b0;else if (Q==8)beginQ<=Q+1;ov<=1'b1;endelse if (Q==9)beginQ<=4'b0000;ov<=1'b0;endelsebeginQ<=Q+1;ov<=1'b0;endendendmodule3 测试基准:`include"./counter_10c.v"module counter_10c_tb;wire[3:0] D_out;reg clk,clr;wire c_out;reg[3:0] temp;initialbeginclk=0;clr=0;#100 clr=1;#20 clr=0;endalways #20 clk=~clk;counter_10c m_1(.Q(D_out),.clear(clr),.clock(clk),.ov(c_out)); endmodule4 仿真波形:实验4 :用 Verilog HDL 程序实现序列检测器1 实验要求:、(1) 编写序列检测器的 Veirlog HDL 程序. 检测串行输入的数据序列中是否有目标序列5'b10010, 检测到指定序列后, 用一个端口输出高电平表示.(2) 编写配套的测试基准.(3) 通过 QuartusII 编译下载到目标 FPGA器件中进行验证.(4) 自行选择合适的模式2试验程序:module e15d1_seqdet( x, z, clk, rst);input x,clk, rst;output z;reg [2:0] state;wire z;parameter IDLE = 3 'd0,A = 3'd1,B = 3'd2,C = 3'd3,D = 3'd4,E = 3'd5,F = 3'd6,G = 3'd7;assign z =(state==D && x==0)?1:0;always @(posedge clk or negedge rst)if(!rst)beginstate<=IDLE;endelsecasex(state)IDLE: if(x==1)state<=A;else state<=IDLE;A: if (x==0)state<=B;else state<=A;B: if (x==0)state<=C;else state<=F;C: if(x==1)state<=D;else state<=G;D: if(x==0)state<=E;else state<=A;E: if(x==0)state<=C;else state<=A;F: if(x==1)state<=A;else state<=B;G: if(x==1)state<=F;else state <=G;default: state<=IDLE;endcaseendmodule3测试基准:`include"e15d1_seqdet.v"`timescale 1ns/1ns`define halfperiod 20module e15d1_seqdet_tb;reg clk, rst;reg [23:0] data;wire z;reg x;initialbeginclk =0;rst =1;#2 rst =0;#30 rst =1;data= 20 'b1100_1001_0000_1001_0100;#(`halfperiod*1000) $stop;endalways #(`halfperiod) clk=~clk;always @ (posedge clk)begin#2 data={data[22:0],data[23]};x=data[23];ende15d1_seqdet m(.x(x),.z(z),.clk(clk),.rst(rst)); endmodule4仿真波形:。
电子系统设计实验指导书(FPGA基础篇Vivado版)
实验指导书(FPGA 基础篇 Vivado 版)
东南大学 电子科学 ........................................................................................................................................................... 1
安全使用规范
东南大学 电子科学与工程学院
无论何时,外部电源供电与 USB 两种供电方式只能用其中一种,避免因为电压有所差别而烧坏电路板。 采用电压高于5.5V的任何电源连接器可能造成永久性的损害。 插拔接插件前请关闭电路板总开关,否则易损坏器件。 电路板应在绝缘平台上使用,否则可能引起电路板损坏。 不同编码机制不要混接。 安装设备需防止静电。 液晶显示器件或模块结雾时,不要通电工作,防止电极化学反应,产生断线。 遇到正负极连接时需谨慎,避免接反引起开发板的损坏。 保持电路板的表面清洁。 小心轻放,避免不必要的硬件损伤。
实验目的 ....................................................................................................................................................... 17 实验内容 ....................................................................................................................................................... 17 实验要求 ....................................................................................................................................................... 17 实验步骤 ....................................................................................................................................................... 17 实验结果 ....................................................................................................................................................... 22
《FPGA设计与应用》实验指导书全(Verilog版)
《FPGA设计与应用》实验指导书熊利祥编武汉理工大学华夏学院2011年9月前言一、实验课目的数字电路与系统设计实验课是电子工程类专业教学中重要的实践环节,包括了ISE开发环境基本操作及FPGA的基本原理、基带传输系统的设计、Uart串口控制器电路的设计、PS/2接口的设计、VGA显示接口设计。
要求学生通过实验学会正确使用EDA技术,掌握FPGA器件的开发,熟练使用ISE开发环境,掌握Verilog语言的编程,掌握数字电路和系统的设计。
通过实验,使学生加深对课堂专业教学内容的理解,培养学生理论联系实际的能力,实事求是,严谨的科学作风,使学生通过实验结果,利用所学的理论去分析研究EDA技术。
培养学生使用Basys 2开发板的能力以及运用实验方法解决实际问题的能力。
二、实验要求:1.课前预习①认真阅读实验指导书,了解实验内容;②认真阅读有关实验的理论知识;③读懂程序代码。
2.实验过程①按时到达实验室;②认真听取老师对实验内容及实验要求的讲解;③认真进行实验的每一步,观察程序代码与仿真结果是否相符;④将实验过程中程序代码和仿真结果提交给老师审查;⑤做完实验后,整理实验设备,关闭实验开发板电源、电脑电源后方可离开。
3.实验报告①按要求认真填写实验报告书;②认真分析实验结果;③按时将实验报告交给老师批阅。
三、实验学生守则1.保持室内整洁,不准随地吐痰、不准乱丢杂物、不准大声喧哗、不准吸烟、不准吃东西;2.爱护公务,不得在实验桌及墙壁上书写刻画,不得擅自删除电脑里面的文件;3.安全用电,严禁触及任何带电体的裸露部分,严禁带电接线和拆线;4.任何规章或不按老师要求操作造成仪器设备损坏须论价赔偿。
目录实验一Uart通用串口接口的设计 (4)实验二PS/2接口的设计 (28)实验三VGA显示接口设计 (30)附录一 basys 2开发板资料 (36)实验一 Uart串口控制接口电路的设计一、实验目的1.掌握分频模块的设计方法。
VerilogHDL语言(PDF)
Verilog 讲义(二)1)续Verilog 基础2)Verilog 形为描述3.4 运算符九类运算符分类包含运算符算术运算符+ - * / %位运算符~ & | ^ ^~or~^缩位运算符& ~& | ~| ^ ^~or~^逻辑运算符! && ||关系运算符> < <= >=相等与全等运算符== != === !==逻辑移位运算符 <<>> 连接运算符 {}: 条件运算符 ?根据操作数的不同,又可分为三类:1)单目运算符只有一个操作数,且运算符位于操作数的左边如:~clk &a ~& 缩位运算符wire [7:0] aparity=^a (奇校验)2)双目运算符a+b a%b {a,b,c}3)三目运算符out=(sel)?a:b;运算符的优先级参:P443.4.1 算术运算符1)减法亦可用作单目运算符,取补运算2)除法运算符:整型类数据小数部分被截去: integer a=7/2=33)% 取余运算 7%2=13.4.2 位运算符1)~a 按位取反2)a&b 按位相与若a,b 位数不同,短的高位补0,(x者补x)3)^ ^~ 双目3.4.3 缩位运算符单目运算符,按位进行逻辑运算,结果产生一位的逻辑值。
A=4’b1001&a ~&a |a ~|a ^a ~^a0 1 1 0 1 0 3.4.3 逻辑运算符a&&b结果为一位的逻辑值若操作数为多位,只要有一位为1,整个操作数看作逻辑1;若有不定态,结果亦为不定态。
3.4.5关系运算符结果为一位的逻辑值。
3.4.6 相等与全等运算符结果为一位逻辑值相等:比较每一位,所有相等,关系满足,若有不定态或高阻态,不定态结果。
全等:与相等比较过程相同,亦将不定态及高阻态作为逻辑状态比较。
3.4.7 逻辑移位运算符<< >> 以0补位。
fpga第六章_Verilog_HDL高级程序设计举例
9/29/2015
Microelectronics School Xidian University
9
流水线结构
例:下图是一个4位的乘法器结构,用Verilog HDL设计一个两级流水 线加法器树4位乘法器。
8x*y[3]
D
4x*y[2]
D
2x*y[1] X*y[0]
PHale Waihona Puke 7 :0]D两级流水线加法器树4位乘法器结构如图所示,通过在第一级与第二 级、第二级与第三级加法器之间插入D触发器组,可以实现两级流水 线设计。
9/29/2015
Microelectronics School Xidian University
7
6.2典型电路设计
• 6.2.1加法器树乘法器
加法器树乘法器的设计思想是“移位后加”,并且加法运算采用加法器 树的形式。乘法运算的过程是,被乘数与乘数的每一位相乘并且乘以 相应的权值,最后将所得的结果相加,便得到了最终的乘法结果。 例:下图是一个4位的乘法器结构,用Verilog HDL设计一个加法器树 4位乘法器
9/29/2015
Xidian University
11
module mult_addtree_2_stag_tb; reg clk, clr; reg [3:0]mult_a, mult_b; wire [7:0]mult_out; mul_addtree_2_stage U1(.mul_a(mult_a),.mul_b(mult_b), .mul_out(mult_out),.clk(clk),.clr(clr)); initial begin clk=0; clr=0; mult_a=1; mult_b=1; #5 clr=1; end always #10 clk=~clk; initial begin repeat(5) begin #20 mult_a=mult_a+1; mult_b=mult_b+1; end end endmodule
Verilog HDL实验报告
HDL实验报告专业电子科学与技术姓名学号指导老师1 实验一Modelsim仿真软件的使用1.1 实验目的(1)熟悉Modelsim 软件;(2)掌握Modelsim 软件的编译、仿真方法;(3)熟练运用Modelsim 软件进行HDL 程序设计开发。
1.2 实验步骤(1)学习使用Modelsim软件;(2)分析原理及功能;(3)用Verilog HDL编写程序;(4)编写测试程序进行仿真;(4)观察波形,分析仿真结果是否正确。
1.3 实验内容用Verilog HDL 程序实现一个异或门,Modelsim 仿真,观察效果。
1.4.1 程序module my_xor(ina,inb,out);input ina,inb;output out;assign out=ina^inb;endmodulemodule t_xor;reg ina,inb;wire out;initialbeginina=1'b0;forever #20 ina=~ina;endinitialbegininb=1'b0;forever #10 inb=~inb;endmy_xor tt(.ina(ina),.inb(inb),.out(out));endmodule2 实验二简单组合电路设计2.1 实验目的(1)掌握基于Modelsim 的数字电路设计方法;(2)熟练掌握HDL 程序的不同实现方法2.2 实验步骤(1)分析原理及功能;(2)根据原理用Verilog HDL编写程序;(3)编写测试程序进行仿真;(4)观察波形,分析仿真结果是否正确。
2.3 实验内容设计一个三人表决器(高电平表示通过) ,实验内容如下:(1)三个人,一个主裁判,两个副裁判;(2)规则:只要主裁判同意,输出结果为通过;否则,按少数服从多数原则决定是否通过。
使用Verilog HDL 程序实现上述实验内容,并使用modelsim 仿真(要求:至少使用两种方法实现上述实验内容和testbench)。
verilog hdl实验报告
verilog hdl实验报告《Verilog HDL实验报告》Verilog HDL(硬件描述语言)是一种用于描述电子系统的硬件的语言,它被广泛应用于数字电路设计和硬件描述。
本实验报告将介绍Verilog HDL的基本概念和使用方法,并通过实验展示其在数字电路设计中的应用。
实验目的:1. 了解Verilog HDL的基本语法和结构2. 掌握Verilog HDL的模块化设计方法3. 熟悉Verilog HDL的仿真和综合工具的使用实验内容:1. Verilog HDL的基本语法和结构Verilog HDL是一种硬件描述语言,其语法和结构类似于C语言。
它包括模块定义、端口声明、信号赋值等基本元素。
在本实验中,我们将学习如何定义Verilog模块,并使用端口声明和信号赋值描述数字电路的行为。
2. Verilog HDL的模块化设计方法Verilog HDL支持模块化设计,可以将复杂的电路分解为多个模块,每个模块描述一个子电路的行为。
在本实验中,我们将学习如何设计和实现Verilog模块,并将多个模块组合成一个完整的数字电路。
3. Verilog HDL的仿真和综合工具的使用Verilog HDL可以通过仿真工具进行功能验证,也可以通过综合工具生成实际的硬件电路。
在本实验中,我们将使用Verilog仿真工具对设计的数字电路进行功能验证,并使用综合工具生成对应的硬件电路。
实验步骤:1. 学习Verilog HDL的基本语法和结构2. 设计一个简单的数字电路,并实现Verilog模块描述其行为3. 使用仿真工具对设计的数字电路进行功能验证4. 使用综合工具生成对应的硬件电路实验结果:通过本实验,我们学习了Verilog HDL的基本概念和使用方法,并成功设计和实现了一个简单的数字电路。
我们使用仿真工具对设计的数字电路进行了功能验证,并使用综合工具生成了对应的硬件电路。
实验结果表明,Verilog HDL在数字电路设计中具有重要的应用价值。
Verilog HDL基础实验指南说明书
Using Fundamental Gates LabOverview:In this lab you will learn how to model simple gates using Verilog HDL and use them to create a more complex design. You will use fundamental gates using language supported primitive gates. After building the basic models you will create a hierarchical design. Outcome:You will understand how to use Verilog primitive gates. You will learn how to create a model using ISE Create Project wizard. You will instantiate lower-level models to create a bigger model. You will use ISE simulator to simulate the design. You will add user constraint file (ucf) to assign pins so the design can be targeted to National Instruments (NI) Digital Electronics FPGA Board. You will implement the design and create a bitstream file using ISE’s implementation tools. Once bitstream is created, you will download using ISE’s iMPACT program and verify the design functionality. Background:Verilog HDL is a hardware description language that can be used to model a digital system at many levels of abstraction ranging from algorithmic- to the gate- to the switch-level. The complexity of the digital system being modeled could vary from a simple gate to a complete system. Various levels of abstractions can be used in modeling the digital system based on its functionality and complexity. The language supports constructs and means to model the digital system in a hierarchical fashion. It also allows designer to describe timing explicitly. The richness of the language constructs is exploited by using same language constructs to test the system.A system- from a simple gate to a complex circuit- typically will have some input signals and some output signals to interact with either other digital devices or external board, and will have some functionality for which it has been designed. The basic unit of description in Verilog is the module. A module describes the functionality of a design and also describes the ports through which it communicates. The basic syntax of the module is:module module_name (port_list);DeclarationsStatementsendmoduleThe Verilog language is case sensitive. In the above example module and endmodule are keywords describing beginning of a module definition and ending of the module definition. You can not have nested module definitions, i.e. you can not have another module keyword within a module-endmodule pair. In the language, a statement is delimited by a semicolon. You can have multiple statements on a given line. The declarations in the above example can be definition of data types such as wire and reg, can be parameter definition, ports direction, functions, and tasks to name few. The Statements can be initial, always, and continuous assignment statements as well as module, gate, UDP (User Defined Primitives) instantiations. The Statements describe theactual functionality of the module. The identifiers must be defined using Declarations before they ca be used.The language defines three fundamental modeling styles. In a given module all or subset of these styles can be used. The three modeling styles are: Structural, Dataflow, and Behavioral. This lab exercise uses Structural style modeling. Structure can be described in Verilog using Built-in gate primitives, Switch-level primitives, User-Defined Primitives (UDP), and module instances. The Switch-level primitives are used to model fundamental gate functionality or a system built with switches or transistors. The UDP are used to define a unit as a black-box with providing functionality in truth-table form and explicit timing relationships between input and output ports. In this lab exercise you will use gate primitives and module instantiations. The language defines the following gates:[Verilog Quick Reference]Here is an example of instantiating a nor gate:nor X1 (S1, A, B);where X1 is the instance name. It is optional for the gate- or switch-level instantiation. The instance name is required for a module instantiation. S1 is output, and A and B are input.References:1. National Instruments’ Digital Electronics FPGA Board user manual2. Verilog HDL booksStephen Brown, Zvonko G. Vranesic, “Fundamentals of Digital Logic with Verilog Design”, 2002 Zainalabedin Navabi, “Verilog Digital Systems Design: RT Level Synthesis, Testbench, andVerification”, 2005Samir Paltinkar, “Verilog HDL: A Guide to Digital Design and Synthesis”, 2003Joseph Cavanagh, “Verilog HDL: Digital Design and Modeling”, 2007Michael D. Ciletti, “Modeling, Synthesis, and Rapid Prototyping with Verilog HDL”, 2003Douglas J. Smith, “HDL Chip Design: A Practical Guide for Designing, Synthesizing and Simulating ASICs and FPGAs using VHDL or Verilog”, 19963. On-line references:Verilog HDL Reference Card: /class/ee183/handouts_win2003/VerilogQuickRef.pdfVerilog Quick Reference: /~howard/pulsenet/docs/verilog_quikref.pdfTutorial on Verilog: .sa/COE/abouh/COE%20202%20Verilog%20Guidelines.pdfProblem Statement:Design a minority gate that has three inputs and one output. The output is logic 1 whenever the numbers of inputs which are logic 1 are zero or less than half of the input (i.e. 1 in this case).Implementation:The circuit to be designed consists of three inputs and one output. Typically such circuit can be implemented using a combinational network. A truth table is created and then some Boolean minimization technique (e.g. K-Map) may be used to reduce the number of logic gates used. The truth table for the design at hand is shown next along with K-Map and minimized Boolean expression.Inputs A B C OutputF0 0 0 1 0 0 1 1 0 1 0 10 1 1 01 0 0 1 1 0 1 0 1 1 0 0 1 1 1 01 1 0 11 0 0 000 01 11 1001AB C F = A C + B C + A B F = (A+C) * (B+C) * (A+B)The two expressions are equivalent. We will use the 2nd expression in this design.Procedure:1. Create a ISE project• Launch ISE: Select Start → Programs → Xilinx ISE Design Suite 10.1 →ISE → Project Navigator• In the Project Navigator, select File → New Project. The New Project Wizard opens• For Project Location, use the “…” button to browse to C:\NI\Verilog_labs, and then click OK• For Project Name, type minoritygate_lab • Click Next • Select the following options and click Next Device Family: Spartan3E Device: xc3s500E Package: ft256 Speed Grade: –5 Synthesis Tool: XST (VHDL/Verilog) Simulator: ISE Simulator (VHDL/Verilog)Preferred Language: Verilog•The Create New Source dialog will appear. You can use this dialog to createa new HDL source file by defining the module name and ports. You will dothis once to get experience. Subsequent files creation will be done using a text file rather than using the dialog. Click New Source button• A new source wizard will appear. Select Verilog Module as a source type andenter my_2or in the File name field and click Next• A Define Module form will appear. Enter in1, in2 as the input in Port Nam e field and out1 as the output. Change the input Direction to output by clicking and drop-down button and selection output as the direction. Click Next and then OK to create the file•Click Next and Add Existing Sources form will be displayed. Click Finish as we do not have anything to add•Click Finish. A project will be created and my_or2.v file be created and added to the project. The file will be opened and displayed in the editorwindow. You can enter related information regarding project name, target devices, etc. You will also see a module and endmodule statements arecreated. The only thing that is needed is to add the functionalityYou will notice that the project hierarchy view window showing the part information as well as my_2or as the top-level model•Enter a gate-level instantiation statement that uses primitive gate to perform or function on the two inputs and output the result with 2 ns delay•Save and close the file•Click New button () and select text file and click OK•Enter the module, endmodule, and gate-level instantiation statement to model 2-input and function using the port names as in1, in2, and out1•Save and close the file, giving my_2and.v as the filename•Similarly, create a new model for the minority gate functionality (3 inputs [in1, in2, and in3] and one output [out1]), instantiating my_2or and my_2and models, and using necessary number of fundamental gates instantiations and having 2 ns as the delay. Use named-mapped port convention. The named-port convention requires a port name of the parent module be listed firstpreceded with “.” followed by a net name that is connecting that port in the current module. In the below figure, .in1 is the port name of my_or2 mdoule (parent module) where as in1_n is the net name connecting to that port. In named-port mapping convention, one need not mention all the ports of the parent module. The unlisted parent module ports are drive logic 0 if theyinput and left unconnected if they are output.•Right-click on my_2or entry in the Sources window and select Add Source …•Select minoritygate.v and my_2and.v files and click Open•Click OK to finish the addition2. Simulate the design using ISIM•Right-click on the minoritygate entry in Sources window and select New Source•Select Test Bench Waveform as the source type and enter minoritygate_tb in the File name field. Click Next•Select minoritygate as the UUT to associate the testbench to the source model and click Next followed by clicking Finish button•Select combinatorial (internal clock) and click Finish to display the input and output signals. Click appropriately in the waveform window to generate input stimulus as shown below•Save the file•Select Sources tab and then click minoritygate in Sources window, and click on the drop-down button of the Sources for window and select Behavioral Simulation•Select minoritygate_tb in Sources tab, expand its entry to see UUT. Select Processes tab, expand Xilinx USE Simulator, and double-click on Simulate Behavioral Model entry to run the simulator•The source files will be compiled and the executable file(minoritygate_tb_ism_beh.exe) be generated which is then run, displaying the result in a waveform window•You can view lower-level signals by selecting Sim Insulator tab in Sources window, expanding hierarchy, selecting a particular instance, then clicking Sim Objects in tab in Processes window, and then selecting and dragging a desired signal(s) in the waveform window•You can zoom-in or zoom-out the waveform window by clicking on appropriate buttons ()•You can restart by clicking on () button and re-run by clicking on run for the specified time()button•You can change the run-time by typing in the new time field(), clicking restart button, and then clicking on run for the specified time button•Close the simulator by closing the waveform window and click OK to close the active simulator3. Implement the design•Select implementation in Sources for window•Select minoritygate module in Sources window•Expand User Constraints processes in Processes window•Double-click on Floorplan IO Pre-Synthesis to open PACE program•Click OK and then Yes to add ucf file•In PACE window assign pin locations and I/O Std as shown below•Click Save button• A dialog box will appear. Choose XST Default: <> option and click OK as we are using XST synthesis tools•Close the PACE program using File→Close• A minoritygate.ucf file will be added to the project. Open that file and see how the constraints are written•Close the file•Select minoritygate in Sources window and double-click on Implement Design process in Processes window. This will go through Synthesis, and Implementation stages•Expand Synthesis processes and double click on View RTL Schematic and View Technology Schematic processes to get different views•You can push-in to a lower-level schematic by double-clicking on the top-level•When the implementation is completed, expand Implement Design process to view the Place & Route report•Double-click on the Place & Route Report to view the report. Look at the resource utilization and note that 1 slice is being used•You can see similar information by clicking on Design Summary tab and looking at the various information4. Verify the design in hardware•Select minoritygate in Sources window and double-click on GenerateProgramming File process to generate the bit file for the designConfiguration Project (iMPACT) process•Connect the board with the USB-JTAG cable•Power ON the board•Click Finish to use the JTAG chain•Select minoritygate.bit file to be assigned to xc3s500e device and click Open•Click Bypass button for xcf04s and then OK to use FPGA device programming•Right-click on the FPGA and select Program•This will program the FPGA and DONE light will lit on the board•Once programmed successfully, verify the functionality by using SW0 thru SW2 and monitoring LD0 output. Verify that when more than one switch isturned ON, LD0 turns OFF•Once confirmed the functionality, power down the board and close ISE saving project changesConclusion:In this lab exercise you learned how to design a hierarchical system. You also learned how to model a circuit using gate-level as well as module-instantiations. You were able to simulate the design at each level and then verify the complete design in hardware board.。
fpga数字电路设计与verilog hdl编程
fpga数字电路设计与verilog hdl编程FPGA(现场可编程逻辑门阵列)数字电路设计是一种高度灵活的硬件设计方法,它允许工程师在芯片上实现复杂的数字逻辑电路。
Verilog HDL(硬件描述语言)编程是一种用于描述数字电路行为和结构的语言,它可以用于编写FPGA数字电路的设计。
FPGA数字电路设计与Verilog HDL编程的主要步骤如下:1. 设计需求分析:首先,明确设计的目标和功能需求,例如实现特定的逻辑功能、控制算法等。
2. 设计输入:将需求转换为数字电路逻辑,可以使用硬件描述语言(如Verilog或VHDL)编写。
编写过程中,需要遵循一定的编程规范,如模块化设计、良好注释等。
3. 逻辑仿真:在设计完成后,需要对电路进行逻辑仿真,以验证其功能是否正确。
仿真工具可以将Verilog代码转换为数字电路,并模拟其实际运行情况。
通过观察仿真结果,可以发现并修复设计中的问题。
4. 综合:将编写好的Verilog代码综合为具体的FPGA芯片配置文件。
综合工具会将逻辑电路优化,以便在FPGA上实现。
这一步骤会生成硬件描述文件,包括布局、布线信息等。
5. 下载与测试:将生成的FPGA配置文件下载到目标FPGA芯片上,并进行实际测试。
测试过程中,可以通过观察输出结果、与预期结果对比等方式,验证设计功能的正确性。
6. 优化与迭代:根据测试结果,对设计进行优化。
这可能包括修改Verilog代码、调整布局布线等。
经过多次迭代,直至达到满意的性能。
7. 交付与生产:完成设计验证后,可以将优化后的FPGA设计交付给生产环节,用于实际应用。
总之,FPGA数字电路设计与Verilog HDL编程是一种灵活且高效的设计方法。
通过编写Verilog代码,可以实现复杂的数字逻辑电路,并在FPGA芯片上实时运行。
在设计过程中,需要关注编程规范、逻辑仿真、综合与优化等方面,以保证电路功能的正确性和性能。
逻辑门实验指南Verilog hdl
操作步骤1:建立工作目录,如:C:\Documents and Settings\Administrator\桌面\myfpga。
1:打开quatusII软件2:新建工程:点击[File]->New Project Wizard,进入界面。
3:设置工程的工作目录4:设置工程名5:点击[Next]进入下一个界面6:如果没有需要导入到工程中的文件,直接点击Next进入下一个界面。
7:按上图所示设置“Family”、“Package”、“Pin count”、“Speed grade”,选择对应芯片。
8:点击Next,进入如下界面,设置仿真工具。
9:点击Next,进入下一界面,确认工程信息是否正确。
10:如果确认信息无误,点击Finish按钮完成工程创建。
11:新建文件,点击[File]->New,如图所示12:选择Design Files 中的Verilog HDL File。
13:输入代码,例如module gates2(input wire a, input wire b, output wire [5:0]z);assign z[5]=a&b;assign z[4]=~(a&b);assign z[3]=a|b;assign z[2]=~(a|b);assign z[1]=a^b;assign z[0]=~(a^b);endmodule温馨提示:模块名(gates2)需要与工程名一致。
14:设置管脚:点击[Assignments]->Pins15:在location中输入对应的管脚号。
16:点击按钮进行工程编译。
17:点击按钮进入下载程序界面。
18:点击Close,在Mode中选择JTAG19:点击按钮选择USB-Blaster。
20:点击按钮开始烧录。
进度条达到100%时表示烧录完成21:改变输入引脚的电平,观察输出的变化。
FPGA设计基础及VerilogHDL语言介绍
显示驱动技术实验
FPGA实验板
FPGA设计基础及VerilogHDL语言介绍
显示驱动技术实验
课程安排
第1章:A/D与D/A
第2章:FPGA设计基础(Quartus II软件介绍) 第3章:Verilog HDL语言介绍 第4章:基于FPGA的数码管显示 第5章:基于FPGA的液晶显示
第6章:基于FPGA的大LED点阵
第7章:基于FPGA的VGA显示
FPGA设计基础及VerilogHDL语言介绍
显示驱动技术实验
本次实验内容
1.分频器的代码实现和仿真; 加分题:十分之一分频器代码实现和仿真; 2.与,或,非逻辑的代码实现和仿真;
加分题:数字逻辑器件的代码实现和仿真,例如三 八译码器;
FPGA设计基础
2 可编程逻辑器件结构原理
显示驱动技术实验
-PAL结构
•与阵列可编程,或 阵列固定; •与阵列可编程使输 入项增多,或阵列固 定使器件简化。 •或阵列固定明显影 响了器件编程的灵活 性
FPGA设计基础
2 可编程逻辑器件结构原理
OLMC
显示驱动技术实验
-GAL结构
•用可编程的 输出逻辑宏 单元(OLMC) 代替固定的 或阵列,可 以实现时序 电路;
FPGA设计基础
显示驱动技术实验
3 FPGA特点
EP1C12Q240
FPGA设计基础
显示驱动技术实验
4 FPGA设计语言
-硬件描述语言HDL(Hardware Description Language)
HDL语言是一种硬件描述语言,最终目的是生成实
际数字逻辑电路,完成一个从抽象化的代码到形象化 的电路的转变。
VerilogHDL基础实验可编程实验报告
可编程逻辑器件设计实验报告实验名称:第二部分:VerilogHDL基础实验实验目的:掌握Quartus II 软件的基本使用方法,完成基本时序电路设计实验时间: 2014 年 06 月 19 日地点: 803实验室学生姓名:学号:实验名称:简单D触发器实验一简单D触发器1、实验步骤(1)创建工程启动New Project Wizard,创建一个工程。
(2)创建文件选择菜单File—>New—>Verilog HDL File,创建一个Verilog HDL文件,在Verilog HDL文件中编写能够完成实验功能的Verilog HDL代码。
(3)编译工程选择菜单Processing —>Start Compilation,或者单击按钮。
(4)观察RTL视图选择菜单Tools—>Netlist Viewers—>RTL Viewer即可生成RTL视图。
(5)仿真1).创建VWF文件选择菜单File—>New—>Vector Waveform File2). 设定“End Time”选择菜单Edit File—> End Time,在弹出的对话框中将Time设置为20us。
3).在VWF文件中输入信号节点选择菜单View—>Utility Windows—>Node Finder,在出现的对话框中将Filter框中设置为Pins:all,再单击List按钮,从端口列表中选择需要观察的并拖到波形编辑窗口中。
4).编辑输入信号波形5).观察仿真结果选择菜单Processing—>Start Simulation,或者单击按钮,观察输出波形。
2. VerilogHDL代码module _DFF (clk,d,q);input clk,d;output q;reg q;always@ (posedge clk)beginq<=d;endendmodule3. RTL 视图4.仿真波形实验二同步置数的D触发器1.实验步骤(1)创建工程启动New Project Wizard,创建一个工程。
verilog HDL--FPGA
– ‘z’或者‘Z’(高阻抗值)
• 例子:1’bz = 1位高阻抗数字
算子
算子符号 + * / % 执行的运算 加法 减法、取负 乘法 除法 取模
例子 ain = 5, bin = 10, cin = 2’b01, din = 2’b0z
bin + cin = 11 bin – cin = 9, -bin = -10 ain * bin = 50 bin / ain = 2 bin % ain = 0
• Verilog HDL 并不是软件编程语言
– 软件编程语言实现的功能可以通过指令集在处 理器上执行
• Verilog HDL是硬件描述语言
– 可综合和可仿真的代码,使用目标器件的结构 单元在硬件中实现,例如触发器和查找表等。
Verilog HDL标准
• • • • IEEE业界标准硬件描述语言 仿真和综合的高级描述语言 版本包括IEEE 1364-1995和IEEE 1364-2001 系统Verilog HDL是Verilog HDL在系统级建模 和验证上的扩展
Waveforms Simulator Text and console
Functional simulation
Verilog HDL模块结构
Verilog HDL——基本模块结构
module module_name (port_list);
端口声明
数据类型声明 电路功能 时序规范
• • • • • • •
• 对操作数的每一位进行运算 • 结果是最大操作数的大小 • 如果位宽不同,以零向左扩展
缩位算子
算子符号
& ~& | ~| ^ ~^或者^~
招待的运算
基于FPGA的四路抢答器的Verilog-HDL代码
moduleqiangda4(clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,inputL4,Led1 ,Led2,Led3,Buzzer);// 开始声明各个端口//输入口input clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,inputL4;//输出口output [0:7] Led1; //倒计时时使用的LED控制端output [0:7] Led2; //数码管控制端output [0:7] Led3; //分数显示数码管控制端output Buzzer; //蜂鸣器//各个寄存器变量声明reg [0:7] Led1;reg [0:7] Led2;reg [0:7] Led3;reg cnt=32'b0;reg Buzzer;reg score=4’hf;//分数显示寄存器//配置寄存器,EnFlat是表明开始抢答的标志位reg EnFlat=1'b0;//BuClk是蜂鸣器的标志位reg BuClk=1'b0;//BuL是做蜂鸣器的延时用reg [0:7]BuL=8'd0;//抢答选手标志位reg answer=3’d0;//各组分数标志位reg score1=4’d5;reg score2=4’d5;reg score3=4’d5;reg score4=4’d5;//------------初始化模块---------------always @ (posedge clk)//捕捉时钟begin//初始化各按键并开始抢答beginif(inputEn==1'b0)begin//初始化各个标志位和参数EnFlat=1'b1;//倒计时开始时8个Led灯全亮Led1=8'b11111111;//组号显示静态数码管(数码管为共阳极)的控制端,有8位Led2=8'b11111111;//分数显示数码管控制端Led3=8'b11111111;//蜂鸣器标志位BuClk=1'b0;//蜂鸣器的控制管脚,低电平为发声音Buzzer=1'b1;endend//--------抢答模块-------beginif(EnFlat==1'b1)begin//如果按键1按下if(inputL1==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;//选手标志位改变,用于加减分数模块answer=3’d1;//静态数码管显示序号'1' ,及显示选手对应的组号Led2=8'hf9;//指示蜂鸣器发声BuClk=1'b1;end//如果按键2按下else if(inputL2==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;answer=3’d2;Led2=8'ha4;BuClk=1'b1;end//如果按键3按下else if(inputL3==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;answer=3’d3;Led2=8'hb0;BuClk=1'b1;end//如果按键4按下else if(inputL4==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;answer=3’d4;Led2=8'h99;BuClk=1'b1;endendend//-------------------加减分数模块----------------//第一组加减分if(answer ==3’d1)beginif(add)score1=score1+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score1=score1-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score1;//把第一组的分数赋值给分数寄存器end//第二组加减分if(answer ==3’d2)beginif(add)score2=score2+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score2=score2-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score2;end//第三组加减分if(answer ==3’d3)beginif(add)score3=score3+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score3=score3-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score3;end//第四组加减分if(answer ==3’d4)beginif(add)score4=score4+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score4=score4-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score4;end//-----------------倒计时模块--------------------beginif(EnFlat==1'b1)beginif(cnt!=32'd4*******)//计时实现1HZ分频cnt=cnt+32'd1;elsebegincnt=32'd0;Led1=8'b11111111<<1'b1;//Led1左移一个单位,实现一秒的倒计时endendif(Led1==8'b0)//倒计时结束还没有按键按下,则抢答停止且蜂鸣器响EnFlat=1'b0;BuClk=1'b1;end//----------蜂鸣器模块-----------------//当蜂鸣器标志位置1时//进入此蜂鸣器处理程序beginif(BuClk==1'b1)begin//蜂鸣器发声Buzzer=1'b0;//延时变量加1BuL = BuL + 8'd1;//当到达延时的时间时关掉蜂鸣器if(BuL==8'd255)begin//延时变量复位BuL=8'd0;//蜂鸣器标志位复位BuClk=1'b0;//蜂鸣器停掉Buzzer=1'b1;endendend//-------------重置模块----------------//按下clr键以后各组参数重置,整个比赛重新开始if(clr)begin//重置各个标志位和参数EnFlat=1'b1;//重置时8个Led灯全亮Led1=8'b11111111;//选手号静态数码管的控制端,有8位Led2=8'b11111111;//选手分数显示数码管重置Led3=8'b11111111;//蜂鸣器标志位重置BuClk=1'b0;//蜂鸣器的控制管脚重置,低电平为发声音Buzzer=1'b1;//各组分数重置score1=4’d5;score2=4’d5;score3=4’d5;score4=4’d5;//分数显示寄存器重置answer=8’hff;end//-----------数码显示模块------------begincase(score)4'h0: Led3 = 8'hc0; //显示04'h1: Led3 = 8'hf9; //显示14'h2: Led3 = 8'ha4; //显示24'h3: Led3 = 8'hb0; //显示34'h4: Led3 = 8'h99; //显示44'h5: Led3 = 8'h92; //显示54'h6: Led3 = 8'h82; //显示64'h7: Led3 = 8'hf8; //显示74'h8: Led3 = 8'h80; //显示84'h9: Led3 = 8'h90; //显示94'ha: Led3 = 8'hbf; //显示-default:Led3 = 8'hff; //不显示endcaseendendendmodule。
vivado_实验指导书
vivado_实验指导书FPGA Basys3开发实验指导书安全使⽤规范●使⽤扩展接⼝扩展电路应⽤前请关闭电路板总开关,避免损坏器件。
●电路板建议在绝缘平台上使⽤,否则可能引起电路板损坏。
●电路使⽤时应防⽌静电。
●液晶显⽰器件或模块结雾时,不要通电⼯作,防⽌电极化学反应,产⽣断线。
●电源正负极、输⼊/输出端⼝定义时需谨慎,避免应接反引起开发板的损坏。
●保持电路板的表⾯清洁。
●⼩⼼轻放,避免不必要的硬件损伤⽬录实验⼀:熟悉VIV ADO编译环境(⼀) (1)⼀、实验⽬的 (1)⼆、实验内容 (1)三、实验要求 (1)四、实验步骤 (1)实验⼆:组合逻辑电路设计 (15)⼀、实验⽬的 (15)⼆、实验内容 (15)三、实验要求 (15)四、实验步骤 (15)五、实验结果 (19)实验三:时序逻辑电路设计 (21)⼀、实验⽬的 (21)⼆、实验内容 (21)三、实验要求 (21)四、实验步骤 (21)五、实验结果 (30)实验四:状态机 (32)⼀、实验⽬的 (32)⼆、实验内容 (32)三、实验要求 (32)四、实验步骤 (32)五、实验结果 (37)实验五:模块化调⽤ (38)⼀、实验⽬的 (38)⼆、实验内容 (38)三、实验要求 (38)实验六:数码管显⽰ (41)⼀、实验⽬的 (41)⼆、实验内容 (41)三、实验要求 (41)四、实验背景知识 (41)五、实验⽅案及实现 (43)六、实验结果 (45)实验七:交通灯 (47)⼀、实验⽬的 (47)⼆、实验内容 (47)三、实验要求 (47)四、实验⽅案及实现 (47)五、实验结果 (52)实验⼋:秒表的设计 (54)⼀、实验⽬的 (54)⼆、实验内容 (54)三、实验要求 (54)四、实验⽅案及实现 (54)五、实验结果 (57)实验九: 蜂鸣器演奏实验 (59)⼀、实验⽬的 (59)⼆、实验内容 (59)三、实验要求 (59)四、实验背景知识 (59)五、实验结果 (64)实验⼗:字符型LCM 驱动 (65)⼀、实验⽬的 (65)⼆、实验内容 (65)三、实验要求 (65)五、实验程序实现 (69)六、实验结果 (74)实验⼗⼀:VGA (76)⼀、实验⽬的 (76)⼆、实验内容 (76)三、实验要求 (76)四、实验背景知识 (76)五、实验结果 (80)实验⼗⼆:PS/2接⼝控制 (81)⼀、实验⽬的 (81)⼆、实验内容 (81)三、实验要求 (81)四、实验背景知识 (81)五、实验⽅案及实现: (84)六、实验结果 (90)实验⼀:熟悉VIVADO编译环境(⼀)⼀、实验⽬的1.熟悉VIV ADO的编译环境;2.了解在VIV ADO环境下运⽤Verilog HDL 语⾔的编程开发流程,包括源程序的编写、编译、模拟仿真及程序下载。
Verilog-HDL高级数字设计实验报告--_俄罗斯方块_FPGA实现
Verilog HDL高级数字设计实验报告题目:“俄罗斯方块”FPGA实现实验目的通过此次项目,完成以下目的:1)熟悉Xilinx FPGA的架构及开发流程2)设计一个功能完整的系统,掌握FSM + Datapath的设计方法。
实验内容1.项目介绍本项目主要在FPGA上实现了一个经典小游戏“俄罗斯方块”。
本项目基本解决方案是,使用Xilinx Zynq系列开发板ZedBoard作为平台,实现主控模块,通过VGA接口来控制屏幕进行显示。
2.系统框架整个系统由四部分组成,按键输入处理模块、控制模块、数据路径模块以及VGA显示接口模块。
整个系统的结构如下图所示:图1:系统框图下面分别对四个模块进行介绍:1)按键输入处理模块按键处理模块的主要功能是对输入系统的up,down,left,right四个控制信号进行消抖处理,并对其进行上升沿检测。
消抖模块采用上课所提出的结构,采用了一个4位的移位寄存器,先将输入信号延迟4个时钟周期,再对其以一个较低的时钟频率进行采用。
消抖模块的结构如下图所示:图2:消抖模块结构示意图为了简化控制系统,在本系统的设计过程中,不考虑长时间按键产生连按效果。
因而,需要对按键进行上升沿检测。
上升沿检测的基本实现方案是加入一组寄存器,对前一个的按键信号进行暂存,将暂存的值与当前值进行比较,当上一个值为0而当前值为1时,即认为其检测到了一个上升沿。
2)控制模块控制模块采用FSM的方式进行控制。
在控制模块中,定义了10个状态:S_idle:上电复位后进入的空状态,当start信号为1时进入S_new状态S_new:用于产生新的俄罗斯方块。
S_hold:保持状态。
在这个状态中进行计时,当时间到达一定间隔时,转到S_down 状态;或者等待输入信号(up,down,left,right)时,转到S_down(按键为down)或者S_move(up,left,right)状态。
S_down:判断当前俄罗斯块能否下移一格。
实验二硬件描述语言(VerilogHDL)软件基本使用方法综述
编译通过后系统信息窗口:报告相关的使用芯片类型、使用的逻辑元素个数 等信息
⑷建立波形文件,设置相关端口信号,同实验一基本相同,设置之后保存波形文 件,重新进行编译。
⑸点击时序仿真按钮,进行仿真,观察结果可知完全符合数字选择电路功能。 这种通过Verilog HDL编程实现的功能与电路设计完成的功能完全相同。
⑷Verilog模块的结构特点 • Verilog程序是由若干模块构成的。每个模块的内容 都嵌在module和endmodule两个关键字之间;每个 模块实现特定的逻辑功能。 • 每个模块首先要进行端口定义,并说明输入和输出 口(input、output或inout),然后对模块的功能 进行定义。 • Verilog程序书写格式自由,一行可以写几个语句, 一个语句也可以分多行写,。 • 除了endmodule等少数语句外,每个语句的最后必 须有分号。 • 可用 /*……*/ 和 //……对Verilog程序作注释。 • Verilog程序书写区分大小写,关键字必须小写。
更多控制端口设置
lpm_counter计数器功能仿真波形
模24方向可控计数器电路
⑸Verilog 模块的模板
•module <顶层模块名> (<输入输出端口列表>); •output 输出端口列表; //输出端口声明 •input 输入端口列表; //输入端口声明 •/*定义数据,信号的类型,函数声明*/ •reg 信号名; •//逻辑功能定义 •assign <结果信号名>=<表达式>; //使用assign语句定义逻辑功能 •//用always块描述逻辑功能 •always @ (<敏感信号表达式>) • begin • //过程赋值 • //if-else,case语句 • //while,repeat,for循环语句 • //task,function调用 • end •//调用其它模块 • <调用模块名module_name > <例化模块名> (<端口列表port_list >); •//门元件例化 • 门元件关键字 <例化门元件名> (<端口列表port_list>); •endmodule