VerilogHDL流水灯设计

合集下载

基于FPGA的verilog的流水灯程序

基于FPGA的verilog的流水灯程序

基于FPGA的流水灯verilog程序`define cnt 17d7840 //cnt是计数量此处计时0.5s。

我调试的板子晶振频率是50MHZ。

32’h17d7840就是0.5s 。

这个十六进制的数值你可以用电脑自带的计数器转换的。

`define cnt_n 17d7841 //cnt值加一,用于下边的计数寄存器led_cnt的复位module led_new (clk,rest,led);input clk;input rest;output [7:0]led;reg [7:0]led;reg [7:0]led_n;reg [31:0] led_cnt;always@(posedge clk or negedge rest)beginif(!rest) led<=8'h80;else led<=led_n;endalways@(*)beginif(!rest) led_n=8'h00;else if(led_cnt==32'h`cnt) led_n={led[6:0],led[7]};else led_n=led;endalways@(posedge clk or negedge rest)beginif(!rest) led_cnt<=32'h0;else if(led_cnt==32'h`cnt_n) led_cnt<=32'h0;else led_cnt<=led_cnt+1'b1;endendmodule十进制数转换成十六进制的操作:先在电脑的开始》附件》计数器;打开计数器,点击“科学型”,窗口右边的键盘输入你想要的计数值,然后再点十六进制就行了QUARTUS II里面的引脚绑定其中clk是芯片内部时钟,仔细观察板子,观察晶振连进板子的那个引脚就是时钟引脚了。

我板子上边标示的是clk0/17。

注意:把程序复制进去的时候请把那些注释删掉,因为我写那些注释只是在WORD文档写而已的。

VerilogHDL流水灯设计

VerilogHDL流水灯设计

VerilogHDL流水灯设计第一篇:VerilogHDL流水灯设计大规模数字逻辑题目:流水灯控制专业电子信息科学与技术班级学号学生姓名设计时间教师评分2013年 12 月 10 日目录一、概述 (1)二、设计目的 (1)三、设计内容 (1)四、设计原理图 (1)五、引脚分配情况 (2)六、源程序代码...........................................2 VerilogHDL 程序:.....................................2 分频器部分: (5)七、心得体会 (6)八、参考文献 (6)一、概述流水灯是一串按一定的规律像流水一样连续闪亮,流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。

流水灯控制可用多种方法实现,但对现代可编程控制器而言,基于EDA技术的流水灯设计也是很普遍的。

二、设计目的1、熟悉利用Quartus II 开发数字电路的基本流程和Quartus II 软件的相关操作。

2、掌握基本的设计思路,软件环境参数配置,仿真,管脚分配,利用JTAG/AS进行下载等基本操作。

3、了解VerilogHDL 语言设计或原理图设计方法。

4、通过本此设计,了解流水灯的工作原理,掌握其逻辑功能及设计方法。

三、设计内容1、用VerilogHDL语言设计一个流水灯,输入0的时候led~led7,1Hz正向流水3次,然后全亮;然后2Hz逆向流水5次全亮;循环。

输入1的时候led0~led7,0.5Hz奇数流水2次,全亮,1Hz偶数流水4次,全亮,然后循环。

2、用QuartusII 软件进行编译,仿真,下载到实验平台进行验证。

四、设计原理图en为可调输入,输出为8位数据,为流水灯实验,试用8个LED 指示灯来表示,具体引脚分配见下。

五、引脚分配情况六、源程序代码VerilogHDL 程序:module LED(clk,led,en);input clk;input en;output [7:0]led;// 输出端口定义为寄存器型reg [7:0] led;reg [8:0] state1;reg [8:0] state2;always @(posedge clk)// always语句,表示每当CLK的上升沿到来时,完成begin-end之间语句的操作if(!en)begin state2 = 0;state1 = state1 + 1;// one clk,one statecase(state1)1,2: led <= 8'b00000001;//1-7 zhengxu,3bian3,4: led <= 8'b00000010;7,8: led <= 8'b00001000;9,10: led <= 8'b00010000;11,12: led <= 8'b00100000;13,14: led <= 8'b01000000;15,16: led <= 8'b10000000;17,18: led <= 8'b00000001;19,20: led <= 8'b00000010;21,22: led <= 8'b00000100;23,24: led <= 8'b00001000;25,26: led <= 8'b00010000;27,28: led <= 8'b00100000;29,30: led <= 8'b01000000;31,32: led <= 8'b10000000;33,34: led <= 8'b00000001;35,36: led <= 8'b00000010;37,38: led <= 8'b00000100;39,40: led <= 8'b00001000;41,42: led <= 8'b00010000;43,44: led <= 8'b00100000;45,46: led <= 8'b01000000;47,48: led <= 8'b10000000;49: led <= 8'b11111111;//quanliang 50: led <= 8'b10000000;51: led <= 8'b01000000;52: led <= 8'b00100000;53: led <= 8'b00010000;54: led <= 8'b00001000;55: led <= 8'b00000100;56: led <= 8'b00000010;58: led <= 8'b10000000; 59: led <= 8'b01000000; 60: led <= 8'b00100000; 61: led <= 8'b00010000; 62: led <= 8'b00001000; 63: led <= 8'b00000100; 64: led <= 8'b00000010; 65: led <= 8'b00000001; 66: led <= 8'b10000000; 67: led <= 8'b01000000; 68: led <= 8'b00100000; 69: led <= 8'b00010000; 70: led <= 8'b00001000; 71: led <= 8'b00000100; 72: led <= 8'b00000010; 73: led <= 8'b00000001; 74: led <= 8'b10000000; 75: led <= 8'b01000000; 76: led <= 8'b00100000; 77: led <= 8'b00010000; 78: led <= 8'b00001000; 79: led <= 8'b00000100; 80: led <= 8'b00000010; 81: led <= 8'b00000001; 82: led <= 8'b10000000; 83: led <= 8'b01000000; 84: led <= 8'b00100000; 85: led <= 8'b00010000; 86: led <= 8'b00001000;88: led <= 8'b00000010;89: led <= 8'b00000001;90: led <= 8'b11111111;91: begin led <= 8'b00000000;state1=0;end default: state1 = 0;endcaseendelsebegin state1 = 0;state2 = state2 + 1;// one clk,one statecase(state2)1,2,3,4: led <= 8'b00000001;5,6,7,8: led <= 8'b00000100;9,10,11,12: led <= 8'b00010000;13,14,15,16: led <= 8'b01000000;17,18,19,20: led <= 8'b00000001;21,22,23,24: led <= 8'b00000100;25,26,27,28: led <= 8'b00010000;29,30,31,32: led <= 8'b01000000;33: led <= 8'b11111111;34,35: led <= 8'b00000010;36,37: led <= 8'b00001000;38,39: led <= 8'b00100000;40,41: led <= 8'b10000000;42,43: led <= 8'b00000010;44,45: led <= 8'b00001000;46,47: led <= 8'b00100000;48,49: led <= 8'b10000000;50,51: led <= 8'b00000010;52,53: led <= 8'b00001000;54,55: led <= 8'b00100000;56,57: led <= 8'b10000000;58,59: led <= 8'b00000010;60,61: led <= 8'b00001000;62,63: led <= 8'b00100000;64,65: led <= 8'b10000000;66: led <= 8'b11111111;67:begin led <= 8'b00000000;state2=0;enddefault: state2 = 0;// default,8'b11111110endcaseend Endmodule分频器部分:module clk_div(clk_out,clk_in);input clk_in;output clk_out;reg clk_out;reg[25:0]counter;//50_000_000=1011_1110_1011_1100_0010_0000_00 parameter cnt=25_000_000;/// 50MHz is the sys clk,50_000_000=2FAF080always @(posedge clk_in)begincounter<=counter+1;if(counter==cnt/2-1)beginclk_out<=!clk_out;counter<=0;endend endmodule 5七、心得体会通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。

Verilog流水灯实验报告.pptx

Verilog流水灯实验报告.pptx
reg rst_n; reg cnt; wire led;
initial begin clk = 0; rst_n = 0; #100 rst_n = 1; end
always #5 clk=~clk;
LSD LSD_inst( .clk(clk), .rst_n(rst_n),
学海无 涯
流水灯实验报告
实验二 流水灯
一、 实验目的
学会编写一个简单的流水灯程序并掌握分频的方法。熟悉 Modelsim 仿真软件的使用。
二、 实验要求
用 Quartus 编写流水灯程序,在 Modelsim 软件中进行仿真。
三、 实验仪器和设备
1、 硬件:计算机 2、 软件:Quartus、Modelsim、(UE)
四、 实验内容
1、 将时钟周期进行分频。 2、 编写 Verilog 程序实现 LED 等依次亮灭,用 Modelsim 进行仿真,绘制波形图。
五、 实验设计
(一)分频原理 已知时钟周期f 为 50MHz,周期 T 为 1/f,即 20ns。若想得到四分频计数器,即周期为 80ns 的时钟,需要把时钟进行分频。即每四个时钟周期合并为一个周期。原理图如图 1 所示。
1
学海无 涯
clk LED
LED
FPGA
cnt
图 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 拼接起来,得到 10 0 01。 流水灯

最新verilog语言的FPGA变速花样流水灯设计

最新verilog语言的FPGA变速花样流水灯设计

v e r i l o g语言的F PG A变速花样流水灯设计基于XILINX--XSE500E型FPGA的变速流水灯以及花样流水灯的verilog语言设计摘要临近大四毕业,诸多工科院校电子电科通信等专业会选择用FPGA项目作为课程设计的课题,笔者同样经历了这个过程,收获颇多,在此将设计成果在此分享,以帮助大家更好掌握FPGA设计。

FPGA种类繁多,时效性非常好,设计过程中十分注重实时性,在时间点控制上非常优秀。

此次设计采用XILINX的XSE500E型芯片的开发板,芯片采用FG320型接口,速度级别-4。

板载时钟50MHz,如需其他时钟周期,可采用IP 核中的clocking,其中的 DCM可以实现变频,引入DCM,输入频率50MHz,输出频率填入需要的频率即可,之后进行实例化。

此外,可以借助计数器进行延时减速,此次设计采用了计数器延时方法。

本次列举了四种流水灯相关设计:普通流水灯(向左和向右滚动),自动反复式流水灯(到最右端自动向左滚动,到左端自动向右滚动),花样流水灯,变速流水灯。

谢谢大家的支持!正文一,普通流水灯1,建模思想普通流水灯,可以向右滚动,到最右端返回最左端,也可以向左滚动,到最左端返回最右端。

普通流水灯模块涉及的端口有:clk,它是时钟输入,一般就是板载时钟,这里是50MHz,具体参照开发板说明。

还有复位输入rst,高电平有效。

此外就是led端口,这个端口有8根管脚,共8位,连接8个led灯。

采用verilog语言,端口定义格式如下:module led(input clk,input rst,output reg[7:0] led //此行定义说明led端口既是驱动管脚的,又是寄存器);采用过程建模,这里不采用行为建模和功能建模,因为这个过程就是一个大循环,规律性极强。

由于板载时钟50MHz,如果每个时钟周期都要滚动流水灯,那么速度是惊人的,人眼根本无法分辨。

所以采用计数器延时,当计数达到约4千万时候,驱动系统进行动作,可以判断,也可以进行流水灯动作。

verilog语言的FPGA变速花样流水灯设计

verilog语言的FPGA变速花样流水灯设计

基于XIL‎I NX--XSE50‎0E型FP‎GA的变速流水‎灯以及花样‎流水灯的v‎e rilo‎g语言设计‎摘要临近大四毕‎业,诸多工科院‎校电子电科‎通信等专业‎会选择用F‎P GA项目‎作为课程设‎计的课题,笔者同样经‎历了这个过‎程,收获颇多,在此将设计‎成果在此分‎享,以帮助大家‎更好掌握F‎P GA设计‎。

FPGA种‎类繁多,时效性非常‎好,设计过程中‎十分注重实‎时性,在时间点控‎制上非常优‎秀。

此次设计采‎用X ILI‎NX的XS‎E500E‎型芯片的开‎发板,芯片采用F‎G320型‎接口,速度级别-4。

板载时钟5‎0MHz,如需其他时‎钟周期,可采用IP‎核中的cl‎o ckin‎g,其中的 DCM可以‎实现变频,引入DCM‎,输入频率5‎0MHz,输出频率填‎入需要的频‎率即可,之后进行实‎例化。

此外,可以借助计‎数器进行延‎时减速,此次设计采‎用了计数器‎延时方法。

本次列举了‎四种流水灯‎相关设计:普通流水灯‎(向左和向右‎滚动),自动反复式‎流水灯(到最右端自‎动向左滚动‎,到左端自动‎向右滚动),花样流水灯‎,变速流水灯‎。

谢谢大家的‎支持!正文一,普通流水灯‎1,建模思想普通流水灯‎,可以向右滚‎动,到最右端返‎回最左端,也可以向左‎滚动,到最左端返‎回最右端。

普通流水灯‎模块涉及的‎端口有:clk,它是时钟输‎入,一般就是板‎载时钟,这里是50‎MHz,具体参照开‎发板说明。

还有复位输‎入r st,高电平有效‎。

此外就是l‎e d端口,这个端口有‎8根管脚,共8位,连接8个l‎e d灯。

采用ver‎i log语‎言,端口定义格‎式如下:modul‎e led(input‎clk,input‎rst,outpu‎t reg[7:0] led //此行定义说‎明l ed端‎口既是驱动‎管脚的,又是寄存器‎);采用过程建‎模,这里不采用‎行为建模和‎功能建模,因为这个过‎程就是一个‎大循环,规律性极强‎。

verilogCPLD流水灯课程设计

verilogCPLD流水灯课程设计

verilogCPLD流水灯课程设计一、课程目标知识目标:1. 学生理解Verilog HDL基本语法和结构,掌握CPLD的基本原理和使用方法。

2. 学生能够描述流水灯的工作原理,并运用Verilog HDL编写程序实现流水灯的功能。

3. 学生了解数字电路设计中时序控制的重要性,并掌握基本时序电路的设计方法。

技能目标:1. 学生能够使用Verilog HDL进行基本程序编写,具备CPLD程序烧录和调试的能力。

2. 学生通过课程实践,培养动手操作能力,提高问题解决能力。

3. 学生能够运用所学知识,进行小组合作,完成流水灯课程的综合性设计。

情感态度价值观目标:1. 学生培养对电子设计的兴趣,增强学习主动性和积极性。

2. 学生在课程实践中,培养团队合作精神,提高沟通与协作能力。

3. 学生认识到电子技术在日常生活中的应用,激发创新意识和实践欲望。

课程性质:本课程为电子技术实践课程,以培养学生的实际操作能力和综合设计能力为主。

学生特点:学生已具备一定的电子技术基础知识,对Verilog HDL和CPLD有一定了解,但实际操作能力有待提高。

教学要求:结合学生特点,注重理论与实践相结合,提高学生的动手能力和创新意识。

在教学过程中,强调团队合作,培养学生沟通协作能力。

通过课程目标的实现,使学生能够独立完成流水灯的设计与实现。

二、教学内容1. Verilog HDL基础语法与结构复习:重点回顾数据类型、运算符、控制语句等基本概念,确保学生能够熟练运用Verilog进行编程。

教材章节:第二章Verilog HDL基础2. CPLD基本原理与使用方法:介绍CPLD的内部结构、工作原理以及编程方法,使学生了解并掌握CPLD的基本使用。

教材章节:第三章CPLD/FPGA原理与应用3. 流水灯工作原理与设计:详细讲解流水灯的工作原理,分析设计思路,指导学生进行Verilog程序编写。

教材章节:第四章数字电路设计实例4. 时序控制与基本时序电路设计:探讨时序控制的重要性,教授基本时序电路的设计方法,为流水灯设计提供技术支持。

[Keil][Verilog][微机原理]流水灯、存储器、外部中断实验_北京邮电大学计算机。。。

[Keil][Verilog][微机原理]流水灯、存储器、外部中断实验_北京邮电大学计算机。。。

[Keil][Verilog][微机原理]流⽔灯、存储器、外部中断实验_北京邮电⼤学计算机。

计算机原理与应⽤实验-流⽔灯、存储器、外部中断实验1 实验⼀流⽔灯实验1.1 实验⽬的1. 掌握ARM开发⼯具的使⽤。

2. 掌握基本IO的使⽤。

1.2 实验原理及内容1. 电路结构图实现流⽔灯的电路结构图如图1所⽰。

以两条红⾊虚线为界,从左⾄右第⼀部分为ARM系统部分,第三部分为外围电路,第⼆部分是接⼝部分,需要⾃⼰将其连接。

图 1 流⽔灯的电路结构图接线⽅式为:GPIOF_0~GPIOF_7(P12接⼝)接LED1~LED8(P2接⼝)。

1. LED电路原理LED灯的驱动原理如图2所⽰。

当发光⼆极管正向导通时,LED灯点亮。

图 2 LED灯正向导通如图3所⽰,LED灯与MCU引脚连接,MCU IO额定电流为25mA,例如0603封装红⾊LED灯额定电流为20mA,已经接近MCU IO的额定电流,可能会损毁器件。

因此图1.3微控制器驱动LED灯⽅案不可取。

图 3 微控制器驱动 LED 灯实际微控制驱动LED灯的电路模型包括:控制器、驱动器和执⾏器三部分,控制器提供控制信号,再由驱动器驱动执⾏器,如图4所⽰。

图 4 LED 灯去驱动电路模型如图5所⽰LED灯通过N沟道MOS管驱动,MCU IO输出⾼电平时MOS管漏极和源极导通LED灯被点亮,反之MCU输出低电平时MOS管漏极和源极截⽌,LED灯不能被点亮。

假设VCC电压3.3V,MOS管导通阻值为零,通过LED灯的电流将远超额定电流出现短路现象,故此⽅案不可取。

图 5 MOS 管驱动 LED 灯电路如图6所⽰,LED驱动电路中增加电阻(R),以此保证通过LED灯的电流不超过额定电流,避免损坏器件,故将电阻R称为限流电阻。

图 6 限流电阻如图7所⽰LED电路原理图,R1位置电阻作为限流电阻,R29位置电阻作为下拉电阻,避免MOS管栅极出现亚稳态。

图 7 LED 电路原理图1. 微控制器IO输出控制原理如图8所⽰,基本结构针对STM32F407有7组IO。

Verilog流水灯设计_SegLed

Verilog流水灯设计_SegLed

SEGLED详细设计方案1.SEGLED简介:数码管由七个条状和一个点状发光二极管管芯制成,称为七段数码管。

数码管是一类价格便宜、使用简单,通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数的器件。

在电器特别是家电领域应用极为广泛,如显示屏、空调、热水器、冰箱等等。

绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。

2.SEGLED规格:编写逻辑使七段数码管计数从0-9循环计数。

3.SEGLED方案目的:1、使学生掌握数码管的原理和使用方法。

2、使学生掌握利用FPGA的I/O口控制数码管原理和使用方法。

4.SEGLED硬件方案:5.实现原理七段数码管实物图片:七段数码管原理:拿显示8举例子;1 1 1 0 1 1 1 1 对应:e gf dp c d b a数码管类型:根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。

共阳共阴,是针对数码管的公共脚而说的。

典型的一位数码管,一般有10个脚,8个段码(7段加1个小数点),剩下两个脚接在一起。

各个段码实际上是一个发光二极管,既然是发光二极管,就有正负极。

共阳,也就是说公共脚是正极(阳极),所有的段码实际上是负极,当某一个或某几个段码位接低电平,公共脚接高电平时,对应的段码位就能点亮,进而组合成数字或字母。

共阴是公共脚是负极(阴极),段码位是阳极,当公共脚接地,段码位接高电平时,对应段码位点亮。

一位数码管就是这样,多位的数码管原理类似。

LED数码管中各段发光二极管的伏安特性和普通二极管类似,只是正向压降较大,正向电阻也较大。

在一定范围内,其正向电流与发光亮度成正比。

由于常规的数码管起辉电流只有1~2 mA,最大极限电流也只有10~30 m A。

共阴共阳与电路接线密切相关,决定了驱动电路的接法,因此在电路设计前要考虑好数码管的类型,否则就不能实现显示的效果了。

共阳极的比较容易驱动,共阴极的比较好编程。

流水灯verilog设计代码

流水灯verilog设计代码
end
else if (pin_ctrl==3'b011) begin
state <= DDOUB_RIGHT ;
if (pin_ctrl==3'b000) begin
state <= LEFT ;
end
else if (pin_ctrl==3'b001) begin
else if (pin_ctrl==3'b001) begin
state <= RIGHT ;
end
else if (pin_ctrl==3'b010) begin
end
RIGHT : begin
if (pin_ctrl==3'b000) begin
state <= LEFT ;
end
ERROR : begin
if (pin_ctrl==3'b000) begin
counter32 <= 32'b0;
end
else begin
counter32 <= counter32+1'b1;
end
end
assign clk = counter32[3] ; //16 fen pin
else if (pin_ctrl==3'b011) begin
state <= DDOUB_RIGHT ;
end
end
else begin
state <= ERROR ;
end
else if (pin_ctrl==3'b011) begin
state <= DDOUB_RIGHT ;

基于VerilogHDL的彩灯

基于VerilogHDL的彩灯

基于VerilogHDL的彩灯基于Verilog的课程设计多路彩灯控制器指导老师:瓮嘉民李小魁班级:0941电子科学与技术成员:周俊冉200910711103李静200910711108马庆蒙200910711110目录1.EDA简介2.彩灯控制器的设计方案3.程序设计和源程序4.波形仿真分析5.硬件测试引脚锁定图6.电路模块图7.实物图8.心得体会9.扩展思路10.参考文献彩灯共有32个状态,流水灯显示部分可以做成7种花样,一种花样完成后,自动进入下一种状态。

交通灯作为辅助部分显示。

第一种花样为彩灯从右到左,依次点亮,从左往右依次点亮,然后全亮。

11111110011111 到00000000101010;第二种花样两边同时亮一个,逐次向中间移动,再散开,全灭。

01111110111111到11111111111110;第三种左边四个灯亮,然后右边四个灯亮,再反过来。

00001111111100和11110000111000第四种奇数灯亮,再偶数灯亮,然后反过来。

01010101110000和01010101110000第五种右边七个亮,然后左边七个亮。

10000000和00000001第六种全亮00000000101101第七种全灭111111111101103.程序设计和源程序整个控制器的实现流程如下:经分析,彩灯控制器设计可以分为四部分:时钟分频,数码管显示,彩灯显示电路。

其中时钟分频又包括四选一数据选择和分频和状态选择两部分系统程序框图如下:Count[6:0]State[5:0]输入时钟clkSelect[1:0]Num[6:0]四选一数据选择模块分频状态选择分频和状态选择嵌套模块count 计满了状态加一,count 清零重新计数;计数时状态保持clkclkSelect[1:0]Display[15:0]一位数码管显示彩灯显示State[5:0]Q[13:0]确定彩灯亮暗状态彩灯显示控制模块数码管显示控制模块分频数Clk彩灯控制器系统框图各部分电路模块框图功能:分频值选择框图此部四选一数据选择器:试验箱上的时钟进行四种分频,该模块对四个时钟进行选择,配合按键的控制选择亮灯之间的时间间隔。

FPGA流水灯实验

FPGA流水灯实验
通过流水灯的实验实现了串行工作,流水线工作(时间并行),并 行流水线工作(空间并行)。串行工作是 CPU 的工作方式,也就是一 个时间只能做一件事。通过 verilogHDL 完全可以模仿这种工作方式, 也就是说通过 CPU 实现的算法和驱动程序完全可以转换成对应的 verilogHDL。并且结构化程序设计的思想(顺序,选择,循环)也可 以通过 verilogHDL 实现。除了串行工作外,verilogHDL 还有 CPU 很 难实现的流水线(时间并行)和并行处理(空间并行)的优势。当然 现在的多核 CPU 通过多线程编程也可以实现并行处理,但实现相对比 较复杂。FPGA 只要逻辑资源足够多,理论上可以实现无限并行处理。
编写代码的首要任务是管理复杂度,研究表明人能同时关注的智 力模型为 7+2,而嵌套关注通常不超过 5 层。编写一段代码的同时关 注点很容易会超过 9 个。通过智力训练提供关注智力模型数的效果微 乎其微。所以为了能编写任意大规模的代码,把同一时间关注的智力 模型数降低的方法是很有效的。而且软件工程也是在制定相关的编程 规范,对编程限制的基础上发展起来的。VerilogHDL 虽然是硬件描述 语言,但它已经摆脱了原始的电路图输入的方式,具有更高的抽象性, 所以它应该可以应该软件开发中的类似的结论来提高开发效率。就像 高级语言相对于 01 机器码编程一样。我觉得在 verilogHDL 在模仿顺 序操作上更像汇编语言,因为它没有实现顺序,选择,循环结构的相
10
了对 Led_Driver 更高层次的操作,使得操作每个 LED 站在了抽象层, 而不是是底层。
在底层你需要考虑定时器翻转多少次才能到这个时间,然后还要 用这个时间打开或关闭 LED,这样需要考虑的问题很复杂也容易出错。 在抽象层你只需要给什么时候打开或关闭 LED 就够了,它就会自动的 完成翻转工作。抽象性也是人脑处理信息的方式,例如自己的家你甚 至说不清门是什么颜色的,门的把手是什么样式的。人脑对门的处理 是抽象的,它是一个可以开和关的门。你只需要知道这个就可以进入 家中,根本不需要记得门的颜色是什么。

用FPGA实现的流水灯VHDL代码

用FPGA实现的流水灯VHDL代码
双击 Boundary Scan,在右边空白处单击右健,选择 Initialize Chain
双击图标选择 bit 文件。右键图标选 择
可编辑
-------------精选文档-----------------
Program
可编辑
-------------精选文档-----------------
设计目的:
在 8 盏 LED 灯每隔一秒钟顺序循环提供高电平使 LED 亮,复位键使 LED 全部置低电平使 LED 灭,重新进行流ED(1) LED(2) LED(3) LED(4) LED(5) LED(6) LED(7)
entity LED_FLASH_VHD is Port ( clk : in STD_LOGIC;
可编辑
-------------精选文档-----------------
rst : in STD_LOGIC; LED_RUN : out STD_LOGIC_VECTOR (7 downto 0)); end LED_FLASH_VHD;
其中 cnt 实现记数功能,对时钟进行分频。 Step 实现让具体哪一盏灯亮。 使用引脚: 复位 rst(Y18)、时钟 clk(D11)、LED 灯(N19、 N15、 R20、R18、U20、
T18、U18、W20);
具体设计:
1、 打开设计软件 Xilinx ISE 11,新建工程 2、 新建 VHDL Module 设置代码,对时钟进行分频: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
可编辑
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大规模数字逻辑题目:流水灯控制专业电子信息科学与技术班级学号学生设计时间教师评分2013年12 月10 日目录一、概述 (1)二、设计目的 (1)三、设计容 (1)四、设计原理图 (2)五、引脚分配情况 (2)六、源程序代码 (2)VerilogHDL 程序: (2)分频器部分: (5)七、心得体会 (6)八、参考文献 (7)一、概述流水灯是一串按一定的规律像流水一样连续闪亮,流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。

流水灯控制可用多种方法实现,但对现代可编程控制器而言,基于EDA技术的流水灯设计也是很普遍的。

二、设计目的1、熟悉利用Quartus II 开发数字电路的基本流程和Quartus II 软件的相关操作。

2、掌握基本的设计思路,软件环境参数配置,仿真,管脚分配,利用JTAG/AS 进行下载等基本操作。

3、了解VerilogHDL 语言设计或原理图设计方法。

4、通过本此设计,了解流水灯的工作原理,掌握其逻辑功能及设计方法。

三、设计容1、用VerilogHDL语言设计一个流水灯,输入0的时候led~led7,1Hz正向流水3次,然后全亮;然后2Hz逆向流水5次全亮;循环。

输入1的时候led0~led7,0.5Hz奇数流水2次,全亮,1Hz偶数流水4次,全亮,然后循环。

2、用QuartusII 软件进行编译,仿真,下载到实验平台进行验证。

四、设计原理图en为可调输入,输出为8位数据,为流水灯实验,试用8个LED指示灯来表示,具体引脚分配见下。

五、引脚分配情况六、源程序代码VerilogHDL 程序:module LED( clk,led,en );input clk;input en;output [7:0]led;// 输出端口定义为寄存器型reg [7:0] led;reg [8:0] state1;reg [8:0] state2;always (posedge clk )// always语句,表示每当CLK的上升沿到来时,完成begin-end 之间语句的操作if(!en)begin state2 = 0;state1 = state1 + 1; // one clk,one statecase(state1)1,2: led <= 8'b00000001; //1-7 zhengxu,3bian3,4: led <= 8'b00000010;5,6: led <= 8'b00000100;7,8: led <= 8'b00001000;9,10: led <= 8'b00010000;11,12: led <= 8'b00100000;13,14: led <= 8'b01000000;15,16: led <= 8'b10000000;17,18: led <= 8'b00000001;19,20: led <= 8'b00000010;21,22: led <= 8'b00000100;23,24: led <= 8'b00001000;25,26: led <= 8'b00010000;27,28: led <= 8'b00100000;29,30: led <= 8'b01000000;31,32: led <= 8'b10000000;33,34: led <= 8'b00000001;35,36: led <= 8'b00000010;37,38: led <= 8'b00000100;39,40: led <= 8'b00001000;41,42: led <= 8'b00010000;43,44: led <= 8'b00100000;45,46: led <= 8'b01000000;47,48: led <= 8'b10000000;49: led <= 8'b11111111; //quanliang50: led <= 8'b10000000;51: led <= 8'b01000000;52: led <= 8'b00100000;53: led <= 8'b00010000;54: led <= 8'b00001000;55: led <= 8'b00000100;56: led <= 8'b00000010;57: led <= 8'b00000001;58: led <= 8'b10000000;59: led <= 8'b01000000;60: led <= 8'b00100000;61: led <= 8'b00010000;62: led <= 8'b00001000;63: led <= 8'b00000100;64: led <= 8'b00000010;65: led <= 8'b00000001;66: led <= 8'b10000000;67: led <= 8'b01000000;68: led <= 8'b00100000;69: led <= 8'b00010000;70: led <= 8'b00001000;71: led <= 8'b00000100;72: led <= 8'b00000010;73: led <= 8'b00000001;74: led <= 8'b10000000;75: led <= 8'b01000000;76: led <= 8'b00100000;77: led <= 8'b00010000;78: led <= 8'b00001000;79: led <= 8'b00000100;80: led <= 8'b00000010;81: led <= 8'b00000001;82: led <= 8'b10000000;83: led <= 8'b01000000;84: led <= 8'b00100000;85: led <= 8'b00010000;86: led <= 8'b00001000;87: led <= 8'b00000100;88: led <= 8'b00000010;89: led <= 8'b00000001;90: led <= 8'b11111111;91: begin led <= 8'b00000000;state1=0;enddefault: state1 = 0;endcaseendelsebegin state1 = 0;state2 = state2 + 1; // one clk,one statecase(state2)1,2,3,4: led <= 8'b00000001;5,6,7,8: led <= 8'b00000100;9,10,11,12: led <= 8'b00010000;13,14,15,16: led <= 8'b01000000;17,18,19,20: led <= 8'b00000001;21,22,23,24: led <= 8'b00000100;25,26,27,28: led <= 8'b00010000;29,30,31,32: led <= 8'b01000000;33: led <= 8'b11111111;34,35: led <= 8'b00000010;36,37: led <= 8'b00001000;38,39: led <= 8'b00100000;40,41: led <= 8'b10000000;42,43: led <= 8'b00000010;44,45: led <= 8'b00001000;46,47: led <= 8'b00100000;48,49: led <= 8'b10000000;50,51: led <= 8'b00000010;52,53: led <= 8'b00001000;54,55: led <= 8'b00100000;56,57: led <= 8'b10000000;58,59: led <= 8'b00000010;60,61: led <= 8'b00001000;62,63: led <= 8'b00100000;64,65: led <= 8'b10000000;66: led <= 8'b11111111;67:begin led <= 8'b00000000;state2=0;enddefault: state2 = 0; // default,8'b11111110endcaseendEndmodule分频器部分:module clk_div(clk_out,clk_in);input clk_in;output clk_out;reg clk_out;reg[25:0] counter; //50_000_000=1011_1110_1011_1100_0010_0000_00parametert=25_000_000; /// 50MHz is the sys clk,50_000_000=2FAF080 always (posedge clk_in)begincounter<=counter+1;if(counter==cnt/2-1)beginclk_out<=!clk_out;counter<=0;endendendmodule七、心得体会通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。

相关文档
最新文档