FPGA入门教程 Basys2
- 格式:pptx
- 大小:3.42 MB
- 文档页数:48
基于BASYS2FPGA的0—99秒可设置倒计时器姓名班级学号实验⽇期 12-10 节次 9-10 教师签字成绩实验名称基于BASYS 2 FPGA 的0 — 99秒可设置倒计时器1.实验⽬的利⽤Xilinx BASYS 2开发板,实现0—99秒的可设置倒计时器。
1、实验板的⼋个开关,前四个控制⼗位,后四个控制个位,按照四位⼆进制数所对应⼗进制数输出(⼤于等于9的均视为9)。
2、四位⼋段数码管⽤于显⽰时间,第⼀位对应⼗位,第⼆位对应个位,后两位对应1秒的百分数。
3、两个按键,RESET 为复位键,按键后,倒计时从当前开关状态重新开始,PAUSE 键为暂停,按住时倒计时暂停,松开后继续。
2.总体设计⽅案或技术路线3.实验电路图Ⅰ、总体RTL SCHEMATIC:端⼝说明:CLK_IN为50MHZ时钟输⼊;PAUSE 计时暂停;RESET 计时重置;S1,S0为重置时设置的倒计时的⾼位和次⾼位的起始值;QA_OUT连接到数码管阳极;QC_OUT连接到⼋段数码管(含⼩数点)阴极;图1 RTL SCHEMATIC整体图图 2 RTL SCHEMATIC细节图Ⅱ、源程序1)主模块顶层程序top.v:module top(CLK_IN,RESET,PAUSE,S1,S0,QC_OUT,QA_OUT);input CLK_IN,RESET,PAUSE;input [3:0] S1,S0;output [7:0] QC_OUT;output [3:0] QA_OUT;wire CLK_OUT;wire CLK2_OUT;wire [3:0] Q1,Q2,Q3,Q4;wire [7:0] Q1_OUT,Q2_OUT,Q3_OUT,Q4_OUT;frediv f1(CLK_OUT,CLK2_OUT,CLK_IN);source_counter_1 c1(Q1,Q2,Q3,Q4,CLK_OUT,RESET,PAUSE,S1,S0);display d1(Q1_OUT,Q1);display2 d2(Q2_OUT,Q2);display d3(Q3_OUT,Q3);display d4(Q4_OUT,Q4);coordination o1(QC_OUT,QA_OUT,Q1_OUT,Q2_OUT,Q3_OUT,Q4_OUT,CLK2_OUT); endmodule2)分模块具体程序1、分频模块frediv.vmodule frediv(CLK_OUT,CLK2_OUT,CLK_IN);output CLK_OUT,CLK2_OUT;input CLK_IN; //50MHZ输⼊reg [18:0] cn; //19位计数器wire CLK_OUT;wire CLK2_OUT;initialbegincn=0;endalways @(posedge CLK_IN)beginif(cn==499999)begin cn<=0; endelse cn<=cn+19'd1;endassign CLK_OUT=cn[18]; //输出100HZ,作为四位数码管赋值模块时钟输⼊assign CLK2_OUT=cn[15]; //输出800HZ,作为数码管扫描频率2、对四位数码管赋值模块source_counter_1.vmodule source_counter_1(Q1,Q2,Q3,Q4,CLK,RESET,PAUSE,S1,S0);input CLK,RESET,PAUSE;input [3:0] S1,S0;output [3:0] Q1,Q2,Q3,Q4;reg [3:0] Q1,Q2,Q3,Q4;reg [3:0] N,M;always @(posedge CLK )begincase (S1)4'd0: N=4'd0;4'd1: N=4'd1;4'd2: N=4'd2;4'd3: N=4'd3;4'd4: N=4'd4;4'd5: N=4'd5;4'd6: N=4'd6;4'd7: N=4'd7;4'd8: N=4'd8;4'd9: N=4'd9;default :N=4'd9;endcasecase(S0)4'd0: M=4'd0;4'd1: M=4'd1;4'd2: M=4'd2;4'd3: M=4'd3;4'd4: M=4'd4;4'd5: M=4'd5;4'd6: M=4'd6;4'd7: M=4'd7;4'd8: M=4'd8;4'd9: M=4'd9;default :M=4'd9;endcase //⾼位和次⾼位的起始值预置if(RESET==1) begin Q1<=N;Q2<=M;Q3<=4'd0;Q4<=4'd0;end //RESET重置else if(PAUSE==1) begin Q1<=Q1;Q2<=Q2;Q3<=Q3;Q4<=Q4; end //PAUSE 暂停else if (Q4==0)begin Q4<=4'd9;if(Q3==0)begin Q3<=4'd9;if(Q2==0)begin Q2<=4'd9;if(Q1==0)begin Q1<=N;Q2<=M;Q3<=4'd0;Q4<=4'd0;endelse Q1<=Q1-4'd1;endelse Q2<=Q2-4'd1;endelse Q3<=Q3-4'd1;endelse Q4<=Q4-4'd1; //对四位数码管依次赋值,类似于递减1的计数器end3、译码显⽰模块3.1:display.vmodule display(Q_OUT,Q);input [3:0] Q;output [7:0] Q_OUT;reg [7:0] Q_OUT;always@(Q)begincase (Q)4'd0:Q_OUT<=8'b11000000; //共阳极数码管4'd1:Q_OUT<=8'b11111001;4'd2:Q_OUT<=8'b10100100;4'd3:Q_OUT<=8'b10110000;4'd4:Q_OUT<=8'b10011001;4'd5:Q_OUT<=8'b10010010;4'd6:Q_OUT<=8'b10000010;4'd7:Q_OUT<=8'b11111000;4'd8:Q_OUT<=8'b10000000;4'd9:Q_OUT<=8'b10010000;default :Q_OUT<=8'b11111111; //数码管的⼩数点DP段码不点亮endcase endEndmodule3.2:display2.vmodule display2(Q_OUT,Q);input [3:0] Q;output [7:0] Q_OUT;reg [7:0] Q_OUT;always@(Q)begincase (Q)4'd0:Q_OUT<=8'b01000000;4'd1:Q_OUT<=8'b01111001;4'd2:Q_OUT<=8'b00100100;4'd3:Q_OUT<=8'b00110000;4'd4:Q_OUT<=8'b00011001;4'd5:Q_OUT<=8'b00010010;4'd6:Q_OUT<=8'b00000010;4'd7:Q_OUT<=8'b01111000;4'd8:Q_OUT<=8'b00000000;4'd9:Q_OUT<=8'b00010000;default :Q_OUT<=8'b01111111; //数码管的⼩数点DP段码点亮,endcaseend其中,3.1和3.2的区别在于数码管的⼩数点DP段码的点亮与否,在top模块的调⽤时保证其整体上显⽰为Q1Q2.Q3Q4形式,即只有Q2通过display2来译码,其他三个通过Display来译码。
硬件课程设计实验报告课题:基于BASYS2的电子琴设计班级:电信0907作者:刘睿学号:U200913771指导老师:龚军课设评价:课设成绩:【摘要】本项目要求设计并实现一个基于BASYS2的电子琴,利用BASYS2实验板的拨码开关实现电子琴相应功能的控制,电子琴的输出有两个声道,可独立输出。
该电子琴可外接PS2键盘,实现电子琴按键功能,同时外接VGA显示器实现电子琴的界面。
该电子琴还具有存储输入按键值并回放功能。
【关键词】:FPGA、BASYS2、电子琴、 PS/2、 VGAAbstract:This project is aimed at designing an electric piano based on BASYS2. The switch on the BASYS2 will control the function of the electric piano. This piano with two different audio channel, can also memory the keys which have been pressed and replay them. This piano can be connected to a PS/2 keyboard, which plays a role of keys of the piano, and connected to a VGA monitor, which could display the interface of the piano.Key words:FPGA 、BASYS2、 ELECTRIC PIANO、 PS/2、 VGA目录1.项目描述 (6)1.1.项目要求 (6)1.2.项目背景 (6)1.3.开发工具简介 (6)2.设计目标 (7)3.硬件描述 (7)3.1.开发板 (7)3.2.显示器 (8)3.3.键盘 (9)4.软件描述 (9)4.1.系统框图 (9)4.2.各模块的功能描述 (10)4.2.1.顶层模块的设计 (10)4.2.2.键盘模块的设计 (11)4.2.3.自动演奏模块的设计 (11)4.2.4.音调发生器模块设计 (11)4.2.5.数控分频模块的设计 (11)4.2.6.数模转换模块的设计 (12)4.2.7.界面显示模块的设计 (12)5.硬件设计............................................................................. 错误!未定义书签。
Basys 2数字电路实验指导书同学们先去网上下载ISE软件,破解并安装!前言一、实验课目的EDA实验课是电子工程类专业教学中重要的实践环节,包括了ISE开发环境基本操作及Verilog语言、组合逻辑电路设计、流水灯设计、计数器设计、扫描显示电路的驱动、综合层次性实验——交通灯或数字秒表设计实验。
要求学生通过实验学会正确使用EDA技术,掌握FPGA器件的开发,熟练使用ISE开发环境,掌握Verilog 语言的编程,掌握数字电路和系统的设计。
通过实验,使学生加深对课堂专业教学内容的理解,培养学生理论联系实际的能力,实事求是,严谨的科学作风,使学生通过实验结果,利用所学的理论去分析研究EDA技术。
培养学生使用EDA实验设备的能力以及运用实验方法解决实际问题的能力。
二、实验要求:1.课前预习①认真阅读实验指导书,了解实验内容;②认真阅读有关实验的理论知识;③读懂程序代码。
2.实验过程①按时到达实验室;②认真听取老师对实验内容及实验要求的讲解;③认真进行实验的每一步,观察程序代码与仿真结果是否相符;④将实验过程中程序代码和仿真结果提交给老师审查;⑤做完实验后,整理实验设备,关闭实验开发板电源、电脑电源后方可离开。
3.实验报告①按要求认真填写实验报告书;②认真分析实验结果;③按时将实验报告交给老师批阅。
三、实验学生守则1.保持室内整洁,不准随地吐痰、不准乱丢杂物、不准大声喧哗、不准吸烟、不准吃东西;2.爱护公务,不得在实验桌及墙壁上书写刻画,不得擅自删除电脑里面的文件;3.安全用电,严禁触及任何带电体的裸露部分,严禁带电接线和拆线;4.任何规章或不按老师要求操作造成仪器设备损坏须论价赔偿。
目录实验一 ISE开发环境入门_五人表决器 (4)实验二加法器、乘法器、比较器的设计 (26)实验三流水灯 (28)实验四计数器 (30)实验五综合层次性实验——交通灯设计 (32)实验六综合层次性实验——数字秒表设计 (34)附录一 basys 2开发板资料 (36)实验一ISE开发环境入门一、实验目的1.了解ISE开发环境及基本操作。
Cubase SX 2基础教程MIDI制作部分CubaseSX2简单入门(MIDI篇)在发这个帖子的同时,我首先声明,对于CubaseSX来说,我本人就是大菜鸟一个。
我一直使用Cakewalk和Sonar制作音乐,从Cakewalk4.0起步一直使用到今天的Sonar3,CubaseSX从1.0版到今天的2.0,在使用Cakewalk和Sonar的同时,逐步学习CubaseSX的优点,始终把两个软件的功能在做比较。
不断地学习CubaseSX 的长处,为了大家能够不断地学习和使用CubaseSX,我只把自己所知道的写出来供大家参考,再次声明,我的知识也不是凭空就有的,也是在互联网这个知识的海洋里不断地跟各位大师和高手学习来的,今天的这个简单教程,我只不过是用我自己的语言从新组织了一下,便于大家接受而已,在你看我这个教程的同时,别把我当成什么高手,真正的高手就在互联网上,当你学会了一点知识后,一定要首先感谢那些为了传播知识不辞辛劳的默默奉献着们。
当你学会了一些操作以后,别忘了再教给那些新的朋友,知识是需要传播的,把从老师那里学来的知识传给更多的需要者,这才是对老师的最好的报答。
希望这个教程能够为大家起到一点帮助作用。
1.首先启动CubaseSX点文件(左起第一个菜单)选新建项目(Ctrl+N),出现对话框,选第一项,然后确定。
图一2.然后又出现一个《设置项目目录》的对话框,目的是问你将来用CubaseSX所生成的音频文件存放在什么地方,你可以选磁盘的某个分区、目录,也可以自己重建一个专门为CubaseSX存放音频文件的目录。
选择或者创建好后,点确定。
图二3.点“项目”菜单(左起第三个),选填加音轨,至于你想填加MIDI轨还是音频轨一看就明白了,我还是顺着MIDI的路子往下说。
选择MIDI,然后在界面上便出现了一条MIDI音轨。
图3设置MIDI在这里我要说一下,我用的输入键盘是一个合成器,如果你没有MIDI键盘的话,能不能使用软键盘(象Cakewalk 和Sonar的虚拟键盘)我可不知道,我只以真实的键盘作为MIDI输入,现在来看MIDI轨道左边的输入,点IN 条右边的小三角选择你的输入设备,如我所用的是YAMAHA的就选择YAMAHA的YAMAHA Driver,然后再在下边的栏目里选择MIDI输出,方法跟选择输入一样。
FPGA入门及Quartus II使用教程FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在可编程阵列逻辑PAL(Programmable Array Logic)、门阵列逻辑GAL(Gate Array Logic)等可编程器件的基础上上进一步发展的产物。
可以这样讲,ASIC(Application Specific Integrated Circuit )内部的所有资源,是用积木堆积起来的小房子,可以是一个欧美风情的房子,还可以是一个北京四合院…….而FPGA内部就可以说是一个个小积木,也就是内部有大量的资源提供给我们,根据我们的需求进行内部的设计。
并且可以通过软件仿真,我们可以事先验证设计的正确性。
第一章FPGA的基本开发流程下面我们基于Altera 公司的QuantusII 软件来说明FPGA 的开发流程。
下图是一个典型的基于Quartus II的FPGA开发整体流程框图。
1、建立工程师每个开发过程的开始,Quartus II以工程为单位对设计过程进行管理。
2、建立顶层图。
可以这样理解,顶层图是一个容器,将整个工程的各个模块包容在里边,编译的时候就将这些模块整合在一起。
也可以理解为它是一个大元件,比如一个单片机,内部包含各个模块,编译的时候就是生成一个这样的大元件。
3、采用ALTERA公司提供的LPM功能模块。
Quartus软件环境包含了大量的常用功能模块,比如计数器、累加器、比较器等等。
4、自己建立模块。
由于有些设计中现有的模块功能不能满足具体设计的要求,那就只能自己设计。
使用硬件描述语言,当然也可以用原理图的输入方法,可以独立的把它们当成一个工程来设计,并且生成一个模块符号(Symbol),类似于那些LPM功能模块。
这里可以理解为,如果我们需求的滤波器,没有现成的合适的,那我们可以通过LC自己来搭建一个滤波器。
5、将顶层图的各个功能模块连线起来。
FPGA入门教程FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,可以根据用户的需求进行配置,用于实现各种不同的逻辑电路。
相比于ASIC(Application-Specific Integrated Circuit), FPGA在设计周期、成本和灵活性方面具有明显的优势。
本教程将介绍FPGA的基本概念、设计流程和常见的编程方法。
一、FPGA的基本概念FPGA由可编程逻辑单元(Look-Up Tables, LUTs)、寄存器和多路复用器等基本元件组成。
这些元件通过一系列的可编程连线来连接,从而实现用户所需的电路功能。
用户可以通过编程来配置FPGA的连线和逻辑单元,从而实现不同的电路功能。
二、FPGA的设计流程1.需求分析:明确设计的目标和需求,确定需要实现的功能。
2.电路设计:将所需的功能转化为电路设计,包括逻辑门电路的设计和连线规划。
3.编程语言选择:选择一种适合的编程语言进行FPGA的编程。
常见的编程语言包括VHDL和Verilog。
4.编写代码:使用选定的编程语言编写FPGA的代码,其中代码包括包括逻辑电路和连线规划。
5.仿真验证:通过仿真软件对FPGA的代码进行验证,确保电路的正确性。
6.综合和布局布线:将FPGA的代码进行综合,将其转换为真正的逻辑电路。
然后进行布局布线,将逻辑电路映射到FPGA的可编程连线中。
8.测试和调试:对FPGA进行测试和调试,检查功能和性能是否符合设计需求。
三、FPGA的编程方法1.结构化编程:采用模块化设计方法,将FPGA的功能划分为若干个模块,每个模块负责实现特定的功能。
然后,将这些模块进行实例化和连接,构建成完整的电路。
2.状态机设计:利用状态机的概念来描述和实现电路的行为。
将电路分为若干个状态,并定义状态之间的转移条件。
通过寄存器和逻辑门来实现状态机的转移和控制逻辑。
3.时序分析:对FPGA的时序进行分析,在设计和布局布线过程中保证电路的正常工作。
FPGA入门及Quartus II使用教程FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在可编程阵列逻辑PAL(Programmable Array Logic)、门阵列逻辑GAL(Gate Array Logic)等可编程器件的基础上上进一步发展的产物。
可以这样讲,ASIC(内部的所有资源,是Application Specific Integrated Circuit )用积木堆积起来的小房子,可以是一个欧美风情的房子,还可以是一个北京四合院…….而FPGA内部就可以说是一个个小积木,也就是内部有大量的资源提供给我们,根据我们的需求进行内部的设计。
并且可以通过软件仿真,我们可以事先验证设计的正确性。
第一章 FPGA的基本开发流程下面我们基于Altera 公司的QuantusII 软件来说明FPGA 的开发流程。
下图是一个典型的基于Quartus II的FPGA开发整体流程框图。
1、建立工程师每个开发过程的开始,Quartus II以工程为单位对设计过程进行管理。
2、建立顶层图。
可以这样理解,顶层图是一个容器,将整个工程的各个模块包容在里边,编译的时候就将这些模块整合在一起。
也可以理解为它是一个大元件,比如一个单片机,内部包含各个模块,编译的时候就是生成一个这样的大元件。
3、采用ALTERA公司提供的LPM功能模块。
Quartus软件环境包含了大量的常用功能模块,比如计数器、累加器、比较器等等。
4、自己建立模块。
由于有些设计中现有的模块功能不能满足具体设计的要求,那就只能自己设计。
使用硬件描述语言,当然也可以用原理图的输入方法,可以独立的把它们当成一个工程来设计,并且生成一个模块符号(Symbol),类似于那些LPM功能模块。
这里可以理解为,如果我们需求的滤波器,没有现成的合适的,那我们可以通过LC自己来搭建一个滤波器。
5、将顶层图的各个功能模块连线起来。
FPGA课设-基于XilinxBasys2开发板的除法器设计介绍⼀下Basys开发板:Basys2 FPGA开发板是⼀个电路设计实现平台,任何⼈都可以通过它来搭建⼀个真正的数字电路。
Basys2是围绕着⼀个Spartan-3E FPGA芯⽚和⼀个Atmel AT90USB USB控制器搭建的,它提供了完整、随时可以使⽤的硬件平台,并且它适合于从基本逻辑器件到复杂控制器件的各种主机电路.Basys2开发板兼容所有版本的Xilinx ISE⼯具,其中也包括免费的WebPack版本。
Basys2附带⼀个⽤于供电和编程的USB下载线,所以就不需要其他供电器件或编程下载线。
此次课设实现的功能:设计⼀个除法器,能在Basys2开发板上实际运⾏。
被除数为16位,除数为8位,被除数和除数都⽤按键输⼊,结果⽤数码管显⽰,设置⼀个使能开关,开关朝上拨时才进⾏运算。
由于数码管和按键等资源数量较少,因此可以考虑采取下⾯的⽅案实现。
LD2 LD1 LD0指⽰状态,000是起始状态,001⽤于输⼊被除数⾼8位,010⽤于输⼊被除数低8位,011⽤于输⼊除数(8位),100⽤于显⽰结果,101⽤于显⽰被除数和除数btn1和btn0和数码管配合,⽤于改变准备输⼊的数据btn2⽤于将数码管显⽰的数据输⼊到相应的地⽅,同时切换状态。
btn3 的功能也是切换状态,如果⽤btn3切换状态,则不改变原来的数据。
sw6如果为1表⽰允许进⾏除法运算,为0则表⽰不允许。
因为LD2-LD0为100和101时需要显⽰6位16进制数,⽽数码管只有4个,所以⽤sw7进⾏切换。
LD2-LD0为100时,sw7为0时显⽰商,为1时显⽰余数,LD2-LD0为101时,sw7为0时显⽰被除数,为1时显⽰除数。
设计⼀个除法器,能在Basys2开发板上实际运⾏。
被除数为16位,除数为8位,被除数和除数都⽤按键输⼊,结果⽤数码管显⽰,设置⼀个使能开关,开关朝上拨时才进⾏运算。
FPGA入门及Quartus II使用教程FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在可编程阵列逻辑PAL(Programmable Array Logic)、门阵列逻辑GAL(Gate Array Logic)等可编程器件的基础上上进一步发展的产物。
可以这样讲,ASIC(Application Specific Integrated Circuit )内部的所有资源,是用积木堆积起来的小房子,可以是一个欧美风情的房子,还可以是一个北京四合院…….而FPGA内部就可以说是一个个小积木,也就是内部有大量的资源提供给我们,根据我们的需求进行内部的设计。
并且可以通过软件仿真,我们可以事先验证设计的正确性。
第一章FPGA的基本开发流程下面我们基于Altera 公司的QuantusII 软件来说明FPGA 的开发流程。
下图是一个典型的基于Quartus II的FPGA开发整体流程框图。
1、建立工程师每个开发过程的开始,Quartus II以工程为单位对设计过程进行管理。
2、建立顶层图。
可以这样理解,顶层图是一个容器,将整个工程的各个模块包容在里边,编译的时候就将这些模块整合在一起。
也可以理解为它是一个大元件,比如一个单片机,内部包含各个模块,编译的时候就是生成一个这样的大元件。
3、采用ALTERA公司提供的LPM功能模块。
Quartus软件环境包含了大量的常用功能模块,比如计数器、累加器、比较器等等。
4、自己建立模块。
由于有些设计中现有的模块功能不能满足具体设计的要求,那就只能自己设计。
使用硬件描述语言,当然也可以用原理图的输入方法,可以独立的把它们当成一个工程来设计,并且生成一个模块符号(Symbol),类似于那些LPM功能模块。
这里可以理解为,如果我们需求的滤波器,没有现成的合适的,那我们可以通过LC自己来搭建一个滤波器。
5、将顶层图的各个功能模块连线起来。
Digilent的Basys2板参考手册引言该Basys2板是一种电路设计和实施平台,任何人都可以使用它获得建立真正的数字电路的经验。
围绕着赛灵思Spartan - 3E现场可编程门阵列和ATMEL的AT90USB2的USB控制器,Basys2板提供完整的、随时可用的硬件适合电路实现从基本逻辑器件到复杂的控制器。
拥有一系列板上的I / O设备和所有需要支持的FPGA电路,这样的设计可以创造无数无需任何其他元件的设计。
4个标准的扩展连接器允许设计使用面包板、用户设计的电路或Pmods扩展Basys2板板,(Pmods是价格便宜的模拟和数字I / O模块,能提供一个A/ D&D / A转换,电机驱动器,传感器投入﹡10万门的赛灵思Spartan-3E FPGA和许多其他功能)。
6针连接器上的信号﹡Atmel AT90USB2全速USB2端口提供电源和编程/数据传输接口免受ESD损害和短路损害,从而确保了﹡赛灵思平台的Flash ROM来存储FPGA配置在任何环境中的使用寿命更长。
该Basys2﹡8个LED,4位7段显示器,4个按键,8滑动开关的PS / 2端口板适用于所有赛灵思ISE工具的版本,包括和8位VGA端口免费版在内。
配有一条可以同时提供电源和﹡用户可设置的时钟(25/50/100MHz),加上短路块可以选择实现下载的USB下载线,所以不需要任何其第二种时钟他电源供应器或编程电缆。
﹡4个6针头扩展连接器该Basys2板可以通过USB2.0端口提供﹡所有I / O信号都有ESD和短路的保护。
电源和板载编程。
Digilent的免费使用的基于图1 Basys2板的结构图和功能模块PC端的Adept的软件会自动检测到Basys2板,同时提供了一个FPGA和板载的Flash ROM的编程接口,并允许用户传输数据(更多内容详见或/)。
该Basys2板设计的与免费的赛灵思ISE WebPACK的CAD软件相配套。