fpga流水灯设计实验报告
Verilog流水灯实验报告

流火灯真验报告之阳早格格创做真验两流火灯一、真验手段教会编写一个简朴的流火灯步调并掌握分频的要领.认识Modelsim仿真硬件的使用.二、真验央供用Quartus编写流火灯步调,正在Modelsim硬件中举止仿真.三、真验仪器战设备1、硬件:估计机2、硬件:Quartus、Modelsim、(UE)四、真验真质1、将时钟周期举止分频.2、编写Verilog步调真止LED等依次明灭,用Modelsim举止仿真,画造波形图.五、真验安排(一)分频本理已知时钟周期f为50MHz,周期T为1/f,即20ns.若念得到四分频计数器,即周期为80ns的时钟,需要把时钟举止分频.即每四个时钟周期合并为一个周期.本理图如图1所示.图1四分频本理图(两)流火灯安排思路1、真止4盏LED灯依次隔1s明灭,即周期为1s;2、估计出频次f为1/T=1Hz;3、树坐计数器cnt,当检测到clk降下沿时启初计数,当cnt计数到24_999_999时,clk_4跳形成1,LED灯明起,当cnt计数49_999_999时,clk_4置0,LED灯燃烧.4、给LED赋初值4’b0001,第一盏灯明.5、利用位拼交,真止循环.(三)安排框图图2安排基础框图(四)位拼交的用法若输进a=4'b1010,b=3'b101,c=4'b0101,念要使输出d=5'b10001用位拼交,标记“{}”:d<={b[2:1],c[1],a[2:1]}即把b的矮1~2位10,c的矮1位0,a的矮1~2位01拼交起去,得到10001.流火灯4'b00014'b00104'b01004'b1000相称于把矮三位左移,并最下位搁正在最矮位.用位拼交可写为:led<={led[2:0],led[3]};矮三位最下位六、真验要领战步调(一)时钟分频1、编写分频步调.2、编写尝试步调.3、举止仿真,波形如图3所示.图3分频仿真截止(两)流火灯1、编写分频步调.3、编写尝试步调.3、举止仿真,为了俭朴时间战便当瞅察波形,将计数器值分别改为24、49跳转.波形如图4所示.图4流火灯仿真截止七、真验参照步调(一)时钟分频1、步调文献module div_clk( //模块名取文献名普遍.定义端心列表,input wire clk, //输进线型input wire rst_n,output reg clk_4 //输出定义为寄存器型);reg[3:0] cnt; //中括号定义位宽,定义中间变量cntalways@(posedge clk)if(rst_n==0)cnt <= 0; //复位为0,计数器也为0else if(cnt==3) //当计数器=3时浑整(可用else if)cnt <= 0;elsecnt <= cnt+1; //计数器自加1 always@(posedge clk)if(rst_n==0)else if(cnt==1)clk_4 <= 1; //当计数器为1时,时钟跳形成1else if(cnt==3)clk_4 <= 0; //当计数器为3时,时钟跳形成0endmodule2、尝试文献`timescale 1ns/1ns module tb_div_clk();reg clk;reg rst_n;wire clk_4;initialbeginclk = 0;rst_n = 0;#100rst_n = 1;endalways #5 clk=~clk; div_clk div_clk_inst(.clk(clk),.rst_n(rst_n),.clk_4(clk_4));endmodule(二)流火灯1、步调文献module LSD( //模块名取文献名普遍.定义端心列表,input wire clk, //输进线型input wire rst_n,output reg[3:0] led);reg[25:0] cnt; //中括号定义位宽,定义中间变量cntreg clk_4;always@(posedge clk)if(rst_n==0)cnt <= 0; //复位为0,计数器也为0else if(cnt==49_999_999) //当计数器=49999999时浑整(可用else if)cnt <= 0;elsecnt <= cnt+1; //计数器自加1 always@(posedge clk or negedge clk) //同步复位if(rst_n==0)else if(cnt==24_999_999)clk_4 <= 1; //当计数器为24999999时,时钟跳形成1else if(cnt==49_999_999)clk_4 <= 0; //当计数器为49999999时,时钟跳形成0elseclk_4 =clk_4;always@(posedge clk_4 or negedge clk_4)if(rst_n==0)led <= 4'b0001;elseled <= {led[2:0],led[3]};//位拼交endmodule2、尝试文献`timescale 1ns/1nsmodule LSD();reg clk;reg rst_n;reg cnt;wire led;initialbeginclk = 0;rst_n = 0;#100rst_n = 1;endalways #5 clk=~clk;LSD LSD_inst(.clk(clk),.rst_n(rst_n),.led(led));endmodule八、真验小结1、干真验要养成良佳的习惯,屡屡干真验时,皆要修坐一个新的文献夹存搁真验所需的步调文献,为仿真时增加文献干准备,也便当以去的查找战使用.2、写步调前要念领会电路真止本理,根据所教数电知识对于各个元器件举止统造.3、写步调时注意排版好瞅整净,共时注意增加注释.4、注意步调中模块名要战文献名普遍,可则步调报错,无法编译通过.5、仿真时,不妨采用分歧的进造.正在念要变动的场合左键,采用【Radix】,其中【Binary】为两进造.如图5所示.图5更矫正造6、正在流火灯仿真时,LED灯的波形一启初是过失的,果为步调中只检测了降下沿always@(posedge clk) ,加上下落沿检测always@(posedge clk or negedge clk) ,即可办理问题,乐成画造波形图.。
fpga流水灯课程设计

大规模数字逻辑课程设计题目:流水灯控制专业电信班级091学号************学生姓名dashitou设计时间2011-2012学年上学期教师评分2011年10 月29 日目录一、概述 (3)二、 EDA技术发展及介绍 (3)(一) EDA技术的介绍 (3)(二) EDA技术的发展趋势 (4)三、程序代码 (5)(一) 分频器代码 (5)(二) 分频器block (6)(三) 主程序代码 (6)(四) 主程序block (9)(五) 总的block模块 (9)四、管脚分配 (9)五、设计原理 (10)六、心得体会 (10)七、参考文献 (10)一、概述流水灯是一串按一定的规律像流水一样连续闪亮,流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。
流水灯控制可用多种方法实现,但对现代可编程控制器而言,基于EDA技术的流水灯设计也是很普遍的。
二、EDA技术发展及介绍(一) EDA技术的介绍EDA是电子设计自动化(Electronic Design Automation)缩写,EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。
随着EDA技术发展和应用领域的扩大与深入,EDA技术在电子信息、通讯、自动控制及计算机应用等领域的重要性突出。
随着技术市场与人才市场对EDA的需求不断提高,产品的市场需求和技术市场的要求也必然会反映到教学领域和科研领域中来。
因此学好EDA技术对我们有很大的益处。
EDA是指以计算机为工具,在EDA软件平台上,根据设计社描述的源文件(原理图文件、硬件描述语言文件或波形图文件),自动完成系统的设计,包括编译、仿真、优化、综合、适配(或布局布线)以及下载。
流水灯实验报告

流水灯实验报告实验目的,通过搭建流水灯电路,了解流水灯的工作原理,并掌握基本的电路连接方法和元器件的使用。
实验仪器与设备,LED灯、电阻、导线、面包板、电源等。
实验原理,流水灯是一种常见的LED灯效应,通过控制LED灯的亮灭顺序,形成灯光流动的效果。
在电路连接方面,我们需要使用电阻来限制LED灯的电流,以保护LED灯不受损坏。
实验步骤:1. 将LED灯和电阻连接到面包板上,按照电路图连接好各个元器件。
2. 将面包板连接到电源上,注意接线的正确性和稳定性。
3. 打开电源,观察LED灯的亮灭顺序,确认流水灯效果是否正常。
实验结果与分析:经过实验,我们成功搭建了流水灯电路,并且观察到LED灯按照一定的顺序亮灭,形成了流水灯的效果。
这说明电路连接正确,元器件工作正常。
在实验过程中,我们发现电阻的作用是非常重要的,它可以限制LED灯的电流,防止LED灯受损。
同时,电源的稳定性也对流水灯的效果有着重要的影响,稳定的电源可以保证LED灯的正常工作。
实验总结:通过本次实验,我们对流水灯的工作原理有了更深入的了解,也掌握了搭建流水灯电路的基本方法。
在今后的学习和实践中,我们可以运用这些知识,进行更多有趣的电路搭建和实验。
实验中还需要注意安全问题,避免短路和触电等意外情况的发生。
在实验过程中,要严格按照操作规程进行,确保实验的顺利进行。
最后,希望通过这次实验,大家能够对电路连接和LED灯效应有更深入的理解,为今后的学习和科研打下坚实的基础。
结语,本次实验结束,谢谢大家的参与和配合,希望大家能够从中收获知识,不断提高自己的实验能力和动手能力。
流水灯实验报告

实验一流水灯实验一、实验目的1)简单I/O引脚的输出2)掌握软件延时编程方法3)简单按键输入捕获判断二、实验实现的功能1)开机时点亮12发光二极管, 闪烁三下2)按照顺时针循环依次点亮发光二极管3)通过按键将发光二极管的显示由顺时针改为逆时针方式三、系统硬件设计单片机STC10F08XE 1片发光二极管led 红4个黄4个绿4个按键6个复位电路时钟电路如下图所示:四、系统软件设计#include<reg51.h>sbit L1=P0^5; sbit L2=P0^6; sbit L3=P0^7; void Delay(void){unsigned char i,j,k;for(i=10;i>0;i--)for(j=132;j>0;j--)for(k=150;k>0;k--); }Scan_Key(){ unsigned char FLAG=0;unsigned char n;n=(L1==0)||(L2==0)||(L3==0);if(n) { FLAG=1;}return FLAG; }main(){ unsigned char y,n,s=0,b=1,m=0;unsigned char c=1;unsigned char a[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char h[]={0xff,0x38,0x34,0x2f,0x1f};n=Scan_Key(); for(y=0;y<3;y++){ P2=0; P3=0; Delay(); Delay(); Delay();P2=0xff; P3=0xff; Delay(); Delay(); Delay(); }while(1) { while(1){ m=m+n; P3=0x3f; while(1){ for(;b<9;b++){ n=Scan_Key(); m=m+n;if((P3==0x3f)&&(m%2==0)){P2=a[b];Delay();}else { P2=0xff;break; }if(m%2==0) c=1; P2=0xff; }for(;c<5;c++){n=Scan_Key(); m=m+n;if((P2==0xff)&&(m%2==0)){ P3=h[c];Delay();}else { P3=0x3f;break;} }if(m%2==0) b=1; break; }if(m%2==1) break; }while(1){ for(;b>0;b--){n=Scan_Key(); m=m+n;if((P3==0x3f)&&(m%2==1)){P2=a[b];Delay(); } else{P2=0xff;break;} P2=0xff; }if(m%2==1) c=4; for(;c>0;c--){ n=Scan_Key(); m=m+n;if((P2==0xff)&&(m%2==1)){ P3=h[c]; Delay();}else { P3=0x3f;break;} P3=0x3f; }if(m%2==0) break;if(m%2==1) b=8; } } }五、实验过程中遇到的问题及解决方法问题1: 如何实现顺、逆时针依次点亮流水灯?解决: 利用循环右移_cror_(m,1)和循环左移_crol_(n,1)依次点亮。
流水灯管实训报告(3篇)

第1篇一、实训背景随着科技的不断发展,自动化技术在各个领域得到了广泛应用。
流水灯管作为一种常见的自动化设备,在工业、商业、家庭等领域都有着广泛的应用。
为了提高学生的实践能力,加深对自动化控制系统的理解,我们开展了流水灯管实训课程。
本次实训旨在通过实际操作,使学生掌握流水灯管的工作原理、设计方法、调试技巧以及故障排除能力。
二、实训目的1. 理解流水灯管的工作原理和结构。
2. 掌握流水灯管的设计方法,包括电路设计、程序编写等。
3. 学会流水灯管的调试技巧,确保其正常运行。
4. 提高学生的动手能力和团队协作能力。
三、实训内容1. 流水灯管概述流水灯管是一种通过电子电路控制,使灯光按照一定的规律进行流动的装置。
其结构主要由灯管、驱动电路、控制电路和电源组成。
流水灯管具有以下特点:(1)结构简单,成本低廉;(2)控制方便,易于实现各种灯光效果;(3)应用广泛,适用于各种场合。
2. 流水灯管工作原理流水灯管的工作原理如下:(1)电源提供稳定电压,通过驱动电路对灯管进行控制;(2)控制电路根据预设的程序,通过改变驱动电路的输出信号,实现灯光的流动;(3)灯管按照预设的规律进行亮灭,形成流水效果。
3. 流水灯管设计(1)电路设计流水灯管的电路设计主要包括以下部分:① 电源电路:为整个系统提供稳定电压;② 驱动电路:将控制信号转换为驱动信号,驱动灯管工作;③ 控制电路:根据预设程序,产生控制信号,控制驱动电路工作;④ 灯管:实现灯光的流动。
(2)程序编写流水灯管的程序编写主要包括以下内容:① 初始化:设置初始状态,包括灯管状态、控制信号等;② 循环控制:根据预设程序,循环改变控制信号,实现灯光流动;③ 故障处理:检测系统运行状态,发现故障时及时处理。
4. 流水灯管调试流水灯管的调试主要包括以下步骤:(1)检查电路连接是否正确;(2)测试电源电压是否稳定;(3)观察灯管工作状态,确保其按照预设程序进行流动;(4)调整控制信号,优化灯光效果;(5)排除故障,确保系统正常运行。
流水灯实验报告总结

流水灯实验报告总结流水灯实验是一种常用的电子元件实践训练,通过使用电子器件和编程语言,实现LED灯的流水效果。
本次实验中,我们成功地搭建了一个简单的流水灯电路,并通过编程控制实现了流水灯的效果。
首先,我们搭建了一个基本的流水灯电路。
流水灯电路由多个LED灯组成,LED 灯按照一定的顺序依次点亮和熄灭。
我们使用了74HC595位移寄存器来控制LED灯的点亮和熄灭。
通过给74HC595寄存器输入正确的二进制数值,可以实现给指定的LED灯点亮或熄灭。
接下来,我们使用编程语言对流水灯进行了控制。
在本次实验中,我们使用了Arduino编程语言来控制流水灯。
通过编写Arduino程序,我们可以控制74HC595寄存器的输入,从而控制LED灯的点亮和熄灭。
在程序中,我们使用了for循环和延时函数来实现流水灯的效果。
通过改变循环的次数和延时的时间,我们可以调整流水灯的速度和亮度。
在实验过程中,我们遇到了一些问题和困难。
首先,我们需要仔细连接电路,确保LED灯和74HC595寄存器的引脚正确连接。
其次,我们需要正确设置Arduino的串口和端口,以便将程序烧录到Arduino板上。
最后,我们需要仔细调试程序,确保流水灯的效果符合预期。
通过本次实验,我们学到了很多知识和技能。
首先,我们了解了流水灯和74HC595寄存器的工作原理。
其次,我们掌握了Arduino编程语言的基本语法和用法。
最后,我们掌握了电路搭建和调试的技巧。
总的来说,本次流水灯实验是一次很有意义的实践训练。
通过实验,我们进一步加深了对电子元件和编程语言的理解,提高了我们解决问题和创新的能力。
同时,通过实验我们也加强了团队合作和沟通的能力。
在今后的学习和工作中,我们将继续运用实践训练所学的知识和技能,不断创新和进步。
可编程式逻辑器件设计试验报告实验LED流水灯的控制实验

课程名称:可编程逻辑器件开课实验室:504 2013年5月31日」、实验目的1.继续熟悉FPGA开发流程2 •熟悉管脚分配,熟悉编程二、实验内容通过代码实现对LED流水灯的控制,使流水灯从左到右依次执行,完成后并循环执行三、实验代码module led_water(clk,led)。
in put clk。
output[7:0] led 。
reg[7:0] led。
reg[50:0] ent。
reg[3:0] cntm 。
always@(posedge clk) beginif(cnt>=50000000) begincn tm<=c ntm+1 。
cn t<=0。
endelsebegincn t<=c nt+1 。
endif(cn tm>=7)begincntm<=0 。
endend always@(posedge clk)begin case(cntm)0:led<=8'b10000000 。
//01:led<=8'b01000000 。
//12:led<=8'b00100000 。
//23:led<=8'b00010000 。
//34:led<=8'b00001000 。
//45:led<=8'b00000100 。
//56:led<=8'b00000010 。
//67:led<=8'b00000001 。
//7 default:led<=7'b00000000 。
endcase end endmodule //更改代码后使流水灯从左到右,走完后在从右到左的走,依次循环 module led_water(clk,led) 。
input clk 。
output[7:0] led 。
reg[7:0] led 。
reg[50:0] cnt 。
多功能流水灯设计实验报告

多功能流水灯的设计一.设计要求:1.设计一8盏彩灯控制电路,使彩灯可以向左,向右流动、全亮、全灭四种功能。
功能变换可以手控也可以自控。
2.自动功能变换时间10秒。
二.总体方案构思:用Verilog语言来为单片机编程,通过编程来控制单片机各引脚在不同时间输出的不同的电平,进而控制个发光二级管的亮灭,以及控制流水灯的流速和流动方向。
1.使用按钮(auto)来控制手动或自动。
2.因为需要向左,向右,全亮,全灭四种功能,所以需要两个开关(btn1和btn2),分别用开和关两种状态表示,即(00,01,10,11)。
3.使用clk时钟来记时和触发事件。
三.实验器材:电脑和LED设备四.程序如下:module LED(clk,auto,btn1,btn2,led);input clk;input auto;input btn1;input btn2;output reg [7:0] led;reg [29:0] count;//1ns的计数器reg [3:0] count_10;//10秒的计数器reg [1:0] status;//记录当前LED灯流动的情况:"00左到右,01右到左,10全亮,11全灭"reg [1:0] type;reg second_1;//1秒的标志reg second_10;//10秒的标志initialbeginstatus<=2'b00;type<=2'b00;count<=30'b0;count_10<=4'b0;second_1<=1'b0;second_10<=1'b0;endalways@(posedge clk)//给出1s的标志和10s的标志beginif(count<25000000)//等待1s的到来begincount<=count+1;second_1<=0;second_10<=0;endelsebegincount<=0;second_1<=1;count_10<=count_10+1;if(count_10>=4'd10)beginsecond_10<=1;endendendalways@(posedge clk)//当自动的情况时,每10s变化一次流动状态beginif(auto==1 && second_1==1)beginif(second_10==1)beginif(status==2'b11)beginstatus<=2'b00;endelsebeginstatus<=status+1;endendendendalways@(posedge clk)//设置总变化状态等于手动或自动的状态beginif(second_1==1)beginif(auto==1)//自动begintype<=status;endelse//手动begintype<={btn1,btn2};endendendalways@(posedge clk)//根据type设置LED灯情况beginif(second_1==1)beginif(type==00)//左到右beginif(led==8'b00000000 || led==8'b11111111)beginled<=8'b10000000;endelsebeginled<=led>>1;endendelse if(type==01)//右到左beginif(led==8'b00000000 || led==8'b11111111)beginled<=8'b00000001;endelsebeginled<=led<<1;endendelse if(type==10)//全亮beginled<=8'b11111111;endelse//全灭beginled<=8'b00000000;endendendendmodule五.测试图如下:六.个人体会:在这次实验中收货颇丰,我学会了使用简单的Verilog语言,更加深入的学习了数字逻辑,还有更多的,我学会和同学们合作,讨论,去解决问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
fpga流水灯设计实验报告
一、实验目的
通过此实验进一步了解,熟悉FPGA开发软件的使用方法及,的编程方法:学习简单时序电路的设计。
二、实验原理和内容
实验内容:在实验板上实现LED1~LED8发光二极管流水灯显示实验原理:在LED1~LED8引脚上周期性地输出流水数据,如原来输出的数据是则表示点亮LED1,LED2流水一次后,输出数据应该为,而此时则应点亮LED1-LED3三个LED发光二极管,这样就可以实现LED流水灯,为了观察方便,流水速率最好在2Hz左右。
在QuickSOPC核心板上有48MHz的标准时钟源,该时钟脉冲CLOCK与芯片的28脚相连,为了产生2Hz的时钟脉冲,在此调用了一个分频模块intdiv模块,通过修改分频系数来改变输出频率,int-div模块是一个占空比为50%的任意整数分频器。
三、实验步骤
1、启动QuartusⅡ建立一个空白工程,然后命名为。
2、新建VerilogHDL源程序文件,输入程序代码并保存,然后进行综合编译。
若在编译过程中发现错误,则找出并更正错误,直至编译成功
为止。
3、从设计文件创建模块,由生成名为的模块符号文件。
4、将光盘中EDA-Component目录下的和拷贝到工程目录。
5、新建图形设计文件命名为并保存。
在空白处双击鼠标左键,在Symbol对话框左上角的中,分别将project下的ledwater和int-div模块放在图形文件中,加入输入,输出引脚,双击各引脚符号进行引脚命名。
将与ledwater模块led[7.0]连接的引脚命名为led[7..0],与int-div模块clock连接的引脚命名为clock,int-div模块的clk-out与ledwater模块的clk相连接。
6、选择目标器件并对相应的引脚进行锁定,在这里所选择的器件为Altera公司Cyclone系列的EPIC12Q240C8芯片,引脚锁定方法见下表,将未使用的引脚设置为三态输入。
7、将设置为顶层实体,对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。
四、实验数据与结果
观察到实验箱流水灯依次闪烁.
五、实验总结
(1)在保存文件名字时不能以数字开头,并文件名要和程序中的模且块名一致,不然编译的时候会报错,当程序编译时的警告超过25个以
上后,程序不能在目标板上正常执行。
(2)学会了怎么使用Quartus,新建工程与下载程序的方法等等。