学 号:
课 程 设 计
题 目 学 院 专 业 班 级 姓 名 指导教师
2020 年 12 月 29 日
多路彩灯控制器设计 信息工程学院 通信工程
陈适
武汉理工大学《FPGA原理与应用课程设计》报告
课程设计任务书
学生姓名: 神秘人 专业班级: 某班级 指导教师: 陈适 工作单位: 信息工程学院 题 目: 多路彩灯控制器设计 要求完成的主要任务: (包括课程设计工作量及技术要求,以及说明书撰写等具体要求)
设计任务:多路彩灯控制器通过对应的开关按钮,能够控制多个彩灯的输出状态,组合多种变幻的灯光效果。掌握自顶向下的全正向设计方法,掌握使用硬件描述语言进行硬件电路设计的方法,熟练使用Quartus II和Modelsim工具。
功能描述:
设计一个多路彩灯控制器,能够使花型循环变化,具有复位清零功能,并可以选择花型变化节奏。功能要求如下:
⑴彩灯控制器由16路发光二极管构成,当控制开关打开时,能够自动在6种不同的花型之间循环变化。
⑵控制器具有复位清零功能,当复位信号有效时,不管花型状态如何,都会立即清零,恢复到初始状态。
⑶设置节拍控制开关,控制多路彩灯的花型以快慢两种节奏变化。 具体要求:
1)完成功能和引脚定义,提交技术规范;(10分) 2)完成总体方案设计,提交总体设计方案;(10分)
3)完成验证方案设计和仿真激励开发,提交验证方案和仿真激励源代码;(10分) 4)完成电路设计,提交电路设计源代码;(10分) 5)完成功能仿真,提交功能仿真报告;(10分)
6)完成综合与布局布线,提交综合与布局布线报告;(10分) 7)采用第三方工具完成后仿真,提交时序仿真报告;(10分) 8)提交FPGA下载代码和引脚分布;(10分)
时间安排:
1、 2020 年 12 月 14 日,布置具体实施计划与应用设计报告格式的要求说明。 2、 2020 年 12 月 14 日至 2020 年 12 月 19 日,方案选择和程序设计。
3、 2020 年 12 月 19 日至 2020 年 12 月 30 日,程序设计和设计说明书撰写。 4、 2020 年 12 月 30 日,上交应用设计成果及报告,同时进行答辩。
指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日
武汉理工大学《FPGA原理与应用课程设计》报告
目 录
摘要 ............................................................................................................................................ I Abstract ..................................................................................................................................... II 1 绪论 ....................................................................................................................................... 1
1.1 题目背景 ...................................................................................................................... 1 1.2 设计目的 ...................................................................................................................... 1 1.3 研究主要内容 .............................................................................................................. 2 2 Verilog语言简介 ................................................................................................................... 3
2.1 Verilog历史 .................................................................................................................. 3 2.2 Verilog语言简介 .......................................................................................................... 3 3 彩灯控制器的设计分析 ....................................................................................................... 5
3.1 系统的需求分析及系统描述 ...................................................................................... 5 3.2 系统原理 ...................................................................................................................... 5 3.3 系统设计框图 .............................................................................................................. 5 3.3 系统流程图 .................................................................................................................. 6 4 彩灯控制器的设计实现 ....................................................................................................... 7
4.1 彩灯控制的模块设计 .................................................................................................. 7 4.1.1 时序控制SXKZ模块 ......................................................................................... 7 4.1.2 显示控制XSKZ模块 ......................................................................................... 8 4.1.3 彩灯控制CDKZ模块 ......................................................................................... 9 4.2 程序流程图 ................................................................................................................ 10 5 程序的仿真与演示 ............................................................................................................. 12
5.1 Quartus II 软件介绍 ................................................................................................. 12
5.2 波形仿真 .................................................................................................................... 13 5.3 管脚分配 .................................................................................................................... 15 5.4 查看综合报告 ............................................................................................................ 15 5.5 查看RTL视图 .......................................................................................................... 15 6 实物测试 ............................................................................................................................. 17
6.1 signal tap logic analyzer ............................................................................................ 17
6.2 实物演示 .................................................................................................................... 18 7 总结与体会 ......................................................................................................................... 19 8 参考文献 ............................................................................................................................. 20 9 附录 ..................................................................................................................................... 21
武汉理工大学《FPGA原理与应用课程设计》报告
摘要
随着科技的发展,在现代生活中,彩灯作为一种装饰既可以增强人们的感观,起到广告宣传作用,每当夜幕降临,街上的彩灯便发出形态各异、色彩斑斓的耀眼光芒,尤其是节假日,主要干道更是彩灯齐放,烘托出浓厚的节日气氛,为人们的生活增添亮丽,并且现代舞台上彩灯的闪烁越发引人注目,更容易使人陶醉在欢乐的海洋中,也需要彩灯装置多种多样。
本文设计了一个以目前被广泛使用的Verilog为基础,实现了十六路彩灯控制器系统的设计,利用verilog“自顶向下”的设计优点以及层次化的设计概念,从简单的单元入手,分为时序控制器,显示控制器,彩灯控制器的三个子模块的设计,构成一个系统,实现了多种花型的循环变化和控制多路彩灯的花型以快慢两种节奏变化,并通过Quartus II软件完成了系统的仿真和实物的测试。本设计简单可靠,有较高的灵活性及实用价值。
传统的彩灯控制电路一般是由数字电路组成,因此结构复杂、成本较高且功率损耗大,而且电路的老化以及机械元件的变化将会导致触发电路电源开关的不稳定,最终使得彩灯经常发生故障。本文设计的一种基于verilog的彩灯控制器。与传统的设计相比,该设计具有速度快、体积小,重量轻的优点。
关键词:FPGA;Verilog;彩灯控制;自顶向下;Quartus II
I
武汉理工大学《FPGA原理与应用课程设计》报告
Abstract
With the development of science and technology, in modern life, colored lights as a decoration can enhance people's perception and play an advertising role. When night falls, the colored lights on the street will emit different shapes and colorful colors. The dazzling light, especially on holidays, the main roads are full of colored lights, setting off a strong festive atmosphere, adding brilliance to people's lives, and the flashing of colored lights on the modern stage is more eye-catching, and it is easier to intoxicate people in joy. In the ocean, a variety of colorful lighting devices are also needed.
This paper designs a system based on Verilog, which is widely used at present, to realize the design of a sixteen-way lantern controller system, using the advantages of Verilog's %units. , Divided into the design of three sub-modules of timing controller, display controller, and color light controller to form a system, which realizes the cyclic change of multiple patterns and controls the pattern of multi-channel lights to change in two rhythms, And through Quartus II software to complete the system simulation and physical production. The design is simple and reliable, with high flexibility and practical value.
The traditional color light control circuit is generally composed of digital circuits, so the structure is complex, the cost is high, and the power loss is large. Moreover, the aging of the circuit and the change of mechanical components will cause the instability of the power switch of the trigger circuit. malfunction. This paper designs a verilog-based lantern controller. Compared with the traditional design, this design has the advantages of fast speed, small size and light weight.
keyword: FPGA; Verilog; color light control; top-down; Quartus II
II
武汉理工大学《FPGA原理与应用课程设计》报告
1 绪论
1.1 题目背景
彩灯对于美化、亮化城市有着不可轻视的重要工作。因此作为城市装饰的彩灯需求量越来越大,人们此时开始关注彩灯的花型、创意等元素,而彩灯控制器作为彩灯的一个重要部分更是备受关注。基于传统的机械和纯电路的控制方式有着十分严重的弊端,传统的彩灯控制电路一般是由数字电路组成,这种彩灯控制器电路结构复杂、成本高、损耗大,电路一旦老化以及机械元件的变化将导致触发电路电源开关不稳定,使得彩灯经常发生故障。
21世纪,电子技术迅猛发展,高薪技术日新月异。传统的设计方法正逐步退出历史的舞台,取而代之的是基于EDA技术的芯片设计技术,它正在成为电子系统设计的主流。大规模可编程器件现场可编程门阵列FPGA和复杂可编程逻辑器件CPLD是当今应用最广泛的两类可编程专用集成电路。
近年来,EDA技术高速发展使现代电子产品向着功能多样化,体积最小化,功耗最低化的方向发展。它与传统电子产品在设计上的显著优势就是:第一大量使用大规模可编程逻辑器件,以提高产品性能,缩小产品体积,降低功耗。第二是广泛运用现代化计算机技术,以提高电子设计自动化程度,缩短开发周期,提高产品的竞争力。所以掌握这方面的应用极其重要,本题目就是基于FPGA这一技术完成实现的。
1.2 设计目的
众所周知,彩灯、流水灯、装饰灯等在日常生活和商业都有极其广泛的应用。具有很高的商业价值和研究价值。而对于越来越变化多端要求极高的灯饰行业,相对传统的单片机来说,FPGA的性价比越来越高,功能强大,能轻松的完成对彩灯的控制。
本设计正是基于Verilog HDL的彩灯控制器设计,实现对LED彩灯的控制。可以FPGA的最小系统作为主控核心与发光二极管、电阻、开关等组成电路,利用软件编译实现彩灯花型变换的效果,可以有效地弥补原来传统的彩灯控制电路的缺点和不足,使得整个系统更加的稳定,并且相关部分的调节可以更加灵活,比如花型、速度。
1
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
在现代生活中,彩灯作为一种景观应用越来越多。而在电子电路设计领域中,电子设计自动化(EDA)工具已成为主要的设计手段,Verilog HDL语言则是EDA的关键技术之一,它采用自顶向下的设计方法,即从系统总体要求出发,自上至下地将设计任务分解为不同的功能模块,最后将各功能模块连接形成顶层模块,完成系统硬件的整体设计。EDA发展给电子系统的设计带来了革命性的变化,EDA软件设计工具、硬件描述语言和可编程逻辑器件使得EDA技术的应用走向普及。FPGA是新型的可编程逻辑器件,采用FPGA进行产品开发可以灵活地进行模块配置,大大缩短了产品开发周期,也有利于产品向小型化,集成化的方向发展。
1.3 研究主要内容
本课程的应用设计是基于Verilog语言开发的彩灯控制器。以Quartus II为开发环境,并在其上实现彩灯控制的基本功能演示并实现实物的运行。其基本功能包括:花型在6种不同的花型之间循环变化,控制器具有复位清零功能,多路彩灯的花型有快慢两种节奏变化。
2
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
2 Verilog语言简介
2.1 Verilog历史
Verilog是由Gateway设计自动化公司的工程师于1983年末创立的。当时Gateway设计自动化公司还叫做自动集成设计系统(Automated Integrated Design Systems),1985年公司将名字改成了前者。该公司的菲尔·莫比(Phil Moorby)完成了Verilog的主要设计工作。1990年,Gateway设计自动化被Cadence公司收购。
1990年代初,开放Verilog国际(Open Verilog International, OVI)组织(即现在的Accellera)成立,Verilog面向公有领域开放。1992年,该组织寻求将Verilog纳入电气电子工程师学会标准 。最终,Verilog成为了电气电子工程师学会1364-1995标准,即通常所说的Verilog-95。
设计人员在使用这个版本的Verilog的过程中发现了一些可改进之处。为了解决用户在使用此版本Verilog过程中反映的问题,Verilog进行了修正和扩展,这部分内容后来再次被提交给电气电子工程师学会。这个扩展后的版本后来成为了电气电子工程师学会1364-2001标准,即通常所说的Verilog-2001。Verilog-2001是对Verilog-95的一个重大改进版本,它具备一些新的实用功能,例如敏感列表、多维数组、生成语句块、命名端口连接等。目前,Verilog-2001是Verilog的最主流版本,被大多数商业电子设计自动化软件包支持。
2005年,Verilog再次进行了更新,即电气电子工程师学会1364-2005标准。该版本只是对上一版本的细微修正。这个版本还包括了一个相对独立的新部分,即Verilog-AMS。这个扩展使得传统的Verilog可以对集成的模拟和混合信号系统进行建模。容易与电气电子工程师学会1364-2005标准混淆的是加强硬件验证语言特性的System Verilog(电气电子工程师学会1800-2005标准),它是Verilog-2005的一个超集,它是硬件描述语言、硬件验证语言(针对验证的需求,特别加强了面向对象特性)的一个集成。
2009年,IEEE 1364-2005和IEEE 1800-2005两个部分合并为IEEE 1800-2009,成为了一个新的、统一的System Verilog硬件描述验证语言(hardware description and verification language, HDVL)。
2.2 Verilog语言简介
Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽
3
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。
Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。
Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。
使用Verilog描述硬件的基本设计单元是模块(module)。构建复杂的电子电路,主要是通过模块的相互连接调用来实现的。模块被包含在关键字module、endmodule之内。实际的电路元件。Verilog中的模块类似C语言中的函数,它能够提供输入、输出端口,可以实例调用其他模块,也可以被其他模块实例调用。模块中可以包括组合逻辑部分、过程时序部分。
Verilog的设计初衷是成为一种基本语法与C语言相近的硬件描述语言。这是因为C语言在Verilog设计之初,已经在许多领域得到广泛应用,C语言的许多语言要素已经被许多人习惯。一种与C语言相似的硬件描述语言,可以让电路设计人员更容易学习和接受。不过,Verilog与C语言还是存在许多差别。另外,作为一种与普通计算机编程语言不同的硬件描述语言,它还具有一些独特的语言要素,例如向量形式的线网和寄存器、过程中的非阻塞赋值等。总的来说,具备C语言的设计人员将能够很快掌握Verilog硬件描述语言。
4
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
3 彩灯控制器的设计分析
3.1 系统的需求分析及系统描述
设计一个彩灯控制器,一共控制着16路发光二极管,当控制开关打开时,能够自动在6种不同的花型之间循环变化。控制器具有复位清零功能,当复位信号有效时,不管花型状态如何,都会立即清零,恢复到初始状态。设置节拍控制开关,控制多路彩灯的花型以快慢两种节奏变化。
3.2 系统原理
根据系统设计要求可知,整个系统共有四个输入信号:控制彩灯节奏的基准时钟信号clk,系统清零信号clr,彩灯节奏加快开关fa,减慢开关lo;共有16个输出信号led[15..0],分别用于控制十六路彩灯。
据此,我们可将整个彩灯控制器CDKZQ分为三大部分:时序控制电路SXKZ和显示控制电路XSKZ。其中,时序模块的功能是通过将基准时钟分频到来完成的,通过计数器计数到某一定值后翻转输出信号实现,通过设置不同的阈值来提供快慢两种频率,控制多路彩灯的花型以快慢两种节奏变化。显示模块是系统的核心部分,其功能是存放彩灯当前的花型和即将变换的花型,花型的样式设计预存其中。彩灯控制模块是总的模块,可以控制总的时钟频率,用于将上述两种模块联系起来,完成最终的目的。
3.3 系统设计框图
彩灯控制模块分为时序控制电路SXKZ和显示控制电路XSKZ三部分来进行设计,设计流程图如图3.1所示。
彩灯控制时序控制显示控制 图3.1 系统设计框图
时序模块通过计数器实现,本实验设计了八分频和十六分频,定义了一个三
5
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
位二进制数temp,从000开始自加,当按键按下时为高速,判断为011时将输出信号反向,并将temp再次置零,即实现了每四个基准时钟周期变一次输出信号反向一次,即一个输出信号周期等于8个基准时钟周期,即八分频,十六分频同理,将判断改为111时输出反向即可。
显示控制模块通过状态机实现,将每种状态机对应一种花型,再将6种花型串联起来即可。一般而言,只要接收到时序模块输入的上升沿时钟信号,就会发生一次波形的变化。
彩灯控制模块会将输入的时钟先进行分频,然后再将分频后的信号输入到时序控制模块,将时序控制模块和显示控制模块结合起来,时序控制的输出端会接入到显示模块的输入端。
3.3 系统流程图
系统控制的流程图如图3.2所示。
开始预分频清零是时序清零否节奏加快是时序控制否计数加快计数清零是显示清零否显示控制花型变换 图3-2 系统流程图
6
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
4 彩灯控制器的设计实现
4.1 彩灯控制的模块设计
4.1.1 时序控制SXKZ模块
在设计时序控制电路SXKZ模块时,可利用数器来产生所需的控制时钟信号CLK。具体过程是这样的,在时钟信号CLK作用下,计数器开始计数,当计数器达到分频值时,对计数器进行清零,同时使输出信号反相,从而实现对CLK的分频。
时序控制电路SXKZ模块的设计思路如图4.1所示。
图4.1 时序控制模块示意图
其中fa和lo是彩灯节奏快慢选择开关,用于选择彩灯节奏的快慢。clk是控制彩灯节奏快慢的基准时钟信号,任意频率的脉冲,作为时钟信号使用。clr是系统清零信号,低电平有效,用于恢复系统的原始状态。out是输出信号,上升沿有效,是显示控制模块的时钟信号。
时序控制电路SXKZ模块的verilog程序主要代码如下:
assign out = cllk;
always @(posedge clk,negedge clr) begin
if (clr == 1'b0)//强制清零 begin
cllk <= 1'b0; temp = 3'b000; speed=0; end else begin
if (speed == 1'b1) begin
if (temp == 3'b011)//计数到一半就输出并清零 begin
temp = 3'b000;
7
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
cllk <= ~cllk; end else; end else begin
if (temp == 3'b111) //十六分频 begin
temp = 3'b000; cllk <= ~cllk; end else; end
if(fa==0) speed<=1; else if (lo==0) speed<=0;
temp = temp + 1'b1; end end
4.1.2 显示控制XSKZ模块
在设计显示控制电路XSKZ模块时,可利用常数来定义输出的6种花色,同时采用状态机来设计6种花色号的循环变化。
显示控制电路SXKZ模块的设计思路如图4.2所示。
图4.2 显示控制模块示意图
其中,clk是输入信号,上升沿有效。clr是系统清零信号,低电平有效,用于恢复系统的原始状态。led[15..0]是输出信号,低电平有效。内部有一个计数器,LED根据内部计数器的值来显示对应的花型。
显示控制电路XSKZ模块的verilog程序主要代码如下:
always @(posedge clk, negedge clr) begin
if (clr == 1'b0)//强制清零 begin
led<=15'b0000000000000000; temp<=3'b000;
8
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
end else begin
if (temp==3'b000) begin
led<=16'b1111_1001_1001_1111; end
else if (temp == 3'b001) begin
led<=16'b0000_0110_0110_0000; end
else if (temp == 3'b010) begin
led<=16'b1110_1101_1011_0111; end
else if (temp == 3'b011) begin
led<=16'b0111_1011_1101_1110; end
else if (temp == 3'b100) begin
led<=16'b1001_0110_0110_1001; end
else if (temp == 3'b101) begin
led<=16'b0110_1111_1111_0110; end else;
temp=temp+1;
if(temp==3'b110) temp<=0; end end
4.1.3 彩灯控制CDKZ模块
十六路彩灯控制器系统CDKZ设计思路如下图4.3所示:
图4.3 彩灯控制模块示意图
9
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
其中fa和lo,是彩灯节奏快慢选择开关,用于选择彩灯节奏的快慢。clk是控制彩灯节奏快慢的基准时钟信号,任意频率的脉冲,作为时钟信号使用,然后先将输入的信号按照需求进行分频,再将分频后的信号送入时序控制模块。clr是系统清零信号,低电平有效,用于恢复系统的原始状态。led[15..0]是彩灯输出信号,低电平有效。
整个电路系统CDKZ的Verilog程序主要代码如下:
module cdkz(clk, clr, fa,lo, led); input clk; input clr; input fa,lo; output [0:15] led; reg div;
reg[19:0] temp;
always @(posedge clk) begin
temp=temp+1;
if(temp==20'b01)//预分频,二分频
//if(temp==20'b1111_1111_1111_1111_1111)//上板测试时用 begin
div=~div; temp=0; end end
sxkz s1(fa,lo, div, clr, out); xskz x1(out,clr,led);
endmodule
4.2 程序流程图
程序流程图下面图4.4所示
10
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
开始开始初始化预分频assign out = cllk;初始化清零clr=1clr,clk上升沿temp=0cllk=0;clr,clk上升沿temp=0led=0清零clr=0否节奏选择speedspeed=0if(temp==3)temp=0cllk=~cllk.clk(out).clr(clr)清零clr=1否是speed=1根据tempLed=S?if(temp==7)temp=0cllk=~cllktemp+=1计数temp+=1if(temp==6)temp=0调节速度if(fa==0) speed<=1;else if (lo==0)speed<=0;temp = temp + 1'b1;输出控制信号out输出16路灯显示led
图4.4 程序流程图
11
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
5 程序的仿真与演示
5.1 Quartus II 软件介绍
本设计所用软件主要是Quartus II,在此对它做一些介绍。
Quartus II是Altera提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。Quartus II提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。
Altera公司的Quartus II开发工具人机界面友好、易于使用、性能优良,并自带编译、仿真功能。Quartus II软件完全支持Verilog设计流程,其内部嵌有Verilog逻辑综合器。Quartus II也可以利用第三方的综合工具,如FPGA Compiler II,并能直接调用这些工具。同样,Quartus II具备仿真功能,同时也支持第三方的仿真工具。此外,Quartus II与MATIAB和DSP Builder结合,可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA技术。
Quartus II包括模块化的编译器。编译器包括的功能模块有分析/综合器、适配器、装配器、时序分析器、设计辅助模块、EDA网表文件生成器、编辑数据接口等。可以通过选择Start Compilation来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。在Compiler Tool窗口中,可以打开该模块的设置文件或报告文件,或者打开其它相关窗口。
图3-1上排所示的是Quartus II编译设计主控界面,它显示了Quartus II自动设计的各主要处理环节和设计流程,包括设计输入编辑、设计分析与综合、适配、编程文件汇编、时序参数提取以及编程下载几个步骤。图5-1下排的流程框图是与上面的Quartus II设计流程相对照的标准的EDA开发流程。
图形或HDL编辑Analysis & Synthesis(分析与综合)Filter(适配器)Assembler(编程汇编)编辑器Timing Analyzer(时序分析器)设计输入综合或编译适配器件下载仿真 图5-1 Quartus II标准开发流程
在设计输入之后,Quartus II的编译器将给出设计输入的错误报告。Quartus II拥有性能良好的设计错误定位器,用于确定文本或图形设计中的错误。在进行编译后,可对设计进行时序仿真。在仿真前,需要利用波形编辑器编辑一个波形激励文件。编译和仿真检测无误后,便可将下载信息通过Quartus II提供的编程器下载入目标器件中了。
12
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
5.2 波形仿真
1、彩灯控制器仿真波形1如图5-2所示
图5-2 彩灯局部仿真波形1
①彩灯控制器上电之后完成清零并初始化。 ②清零信号失效之后,六种花型进入循环变化。 2.彩灯局部仿真波形2如图5-3所示。
图5-3 彩灯局部仿真波形2
①当花型变化中出现清零信号,led会立即置零,显示所有灯管。 ②当清零信号消除时,花型重新从第一种花型开始变化。
13
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
3.彩灯局部仿真波形3如图5-4所示。
图5-4 彩灯局部仿真波形3(fa有效)
①当节奏加快信号即fa有效后,花型变化速度明显变快。
②节奏变化信号出现时,是在原来花型的基础上进行变化,并不是从第一种重新开始。
4.彩灯局部仿真波形4如图5-5所示。
图5-5 彩灯局部仿真波形4(lo有效)
①当节奏放慢信号有效时,花型变换速度会降低,并且花型变化不从第一种开始。 ②花型变化速度取决于s1中的temp可以计数到多少。
14
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
5.3 管脚分配
图5.6 管脚分配图
5.4 查看综合报告
图5.7 综合报告截图
5.5 查看RTL视图
在Quartus II中,在菜单栏点击tools,然后选择Netlist Viewers,点击RTL viewer。得到CDKZ的RTL视图,如图5-8所示,再点击两个模块,可以得到SXKZ模块和CDKZ模块的RTL视图,分别如图5-9和图5-10所示。
15
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
Equal0A[19..0]temp[19..0]D20'hfffffB[19..0]1'h0CIN=OUTAdd0+OUT[19..0]01div~0DdivclkCLKQA[19..0]20'h0SCLR20'h1B[19..0]CLKQ1'h0SCLRclksxkz:s1clrfaloclrfalooutxskz:x1clkclrled[15..0]led[0..15] 图5.8 彩灯控制模块RTL视图
xskz:x1led[0]~reg[15..0]clkDled[15..0]Equal6A[2..0]1'h0CINA[2..0]Add0+OUT[2..0]3'h6B[2..0]=OUTtemp[2..0]temp~[2..0]0D16'h0SCLRCLKCLRNQ3'h1B[2..0]clr3'h013'h0CLKSCLRCLRNQA[2..0]Equal4=OUTA[2..0]Equal0=OUT3'h4B[2..0]A[2..0]Equal5=OUTled~[31..16]0Equal1A[2..0]3'h0B[2..0]led~[95..80]03'h5B[2..0]16'ha5291led~[15..0]0Equal2A[2..0]3'h1B[2..0]=OUT3'h2B[2..0]Equal3A[2..0]0=OUT0led~[79..64]led~[63..48]016'h8888116'h66db1led~[47..32]16'h24921=OUT16'hcccc116'h555513'h3B[2..0]图5.9 时序控制模块RTL视图
xskz:x1led[0]~reg[15..0]clkDled[15..0]Equal6A[2..0]1'h0CINA[2..0]Add0+OUT[2..0]3'h6B[2..0]=OUTtemp[2..0]temp~[2..0]0D16'h0SCLRCLKCLRNQ3'h1B[2..0]clr3'h013'h0SCLRCLKCLRNQA[2..0]Equal4A[2..0]Equal0led~[31..16]03'h4B[2..0]Equal5A[2..0]=OUTEqual1A[2..0]3'h0B[2..0]=OUTled~[95..80]03'h5B[2..0]=OUT16'h96691led~[15..0]0Equal2A[2..0]3'h1B[2..0]=OUT3'h2B[2..0]=OUTled~[79..64]016'hf99f116'h6ff61Equal3A[2..0]led~[63..48]016'h6601led~[47..32]016'hedb713'h3B[2..0]=OUT16'h7bde1图5.10 显示控制模块RTL视图
16
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
6 实物测试
6.1 signal tap logic analyzer
可以看到clr有效,led被清零至于低电平,如图6.1所示。
图6.1 signal tap分析图1(clr键按下)
可以看到clr有效,led显示某种花型,如图6.2所示。
图6.2 signal tap分析图2(lo键按下)
17
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
6.2 实物演示
clr键按下,led被清零至于低电平,灯全亮,如图6.3所示。
图6.3 实物测试图1(clr键按下)
清零结束后,开始展示第一种花型,如图6.4所示。
图6.4 实物测试图2(第一种花型)
18
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
7 总结与体会
这次课程设计我收获巨大,我耗费了大量时间和精力,翻阅了大量书籍资料,终于得以完成,尽管过程有些艰辛,但最终实现了目的,得到了想要的结果,并且学到了很多课本之外的东西,同时也加强了我的动手、思考和解决问题的能力,总而言之是受益匪浅。
用Verilog硬件描述语言的形式进行数字系统的设计方便灵活,利用Quartus进行编译优化仿真极大地减少了电路设计时间和可能发生的错误。降低了开发成本,这中设计方法必将在未来的数字系统设计中发挥越来越重的作用。本设计采用FPGA来控制彩灯的逻辑运行,具有编程灵活,性能可靠等优点。在设计过程中我们首先把整个彩灯设计根据功能分成若干个功能模块,然后理清各模块的时序,以便将各个功能模块综合在一起,能够共用数据总线,使其能正常工作不受干扰。
采用FPGA技术,利用verilog语言,采用自顶向下的设计方法,实现了多路彩灯控制器的设计,并在Quartus II软件平台下对设计项目进行的了编译和时序仿真。实验结果表明,该系统基本满足本次设计的要求,完成了一组花样中6种花型的循环显示,能够满足一般的彩灯控制的工作功能需要。
经过本次应用设计,我对彩灯控制系统的工作原理有了深入认识,学会了对Quartus电路仿真设计。并且,使我将原来所学的知识系统化、理论化、实用化,对如何使用己有知识及获取相关资料方面的能力又有了提高。通过这次设计,我还认识到无论做什么,都需要踏实,勤奋,严谨的工作态度,这对我以后的工作将会产生深远的影响。设计达到了预定的设计目的,完成了彩灯控制器的基本功能和达到了基本的技术指标。利用FPGA实现了对彩灯的控制,通过合理的设备选型、参数设置和软件设计,提高了彩灯运行的可靠性。用verilog硬件描述语言的形式来进行数字系统的设计方便灵活,利用Quartus软件进行编译优化、仿真、极大地减少了电路设计时间和可能发生的错误,降低了开发成本。
从这次的应用设计过程中,我深深地认识到,从前的学习过程比较浅显,只是流于表面的理解,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。而现在要做应用设计,就不得不要求我对所用到的知识有更深层次的理解。因为课程设计的内容比及书本中的理论知识而言,更接近于现实生活,而理论到实践的转化往往是一个艰难的过程。
虽然整个过程很艰苦,从刚开始的激情到压抑再到痛苦,但是最终我得到的是喜悦。有时候理论明明可以到了实际就是会出问题,但是我没有放弃。而这也为我今后的学习提供了借鉴之处,理论结合实际,独立思考,大胆动手,知识才能更加牢固。
19
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
8 参考文献
[1] Wakerly J F. Digital Design: Principles And Practices, 4/E[M]. Pearson Education India, 2008.
[2] 夏宇闻. Verilog 数字系统设计教程[M]. 北京航空航天大学出版社, 2008. [3] 黄正巾,徐坚等.CPLD系统设计与应用[M].北京:电子工业出版社,2002,110~123.
[4] 蒋璇,臧春花.数字系统设计与PLD应用技术[M].北京:电子工业出版社,2001,23~34.
[5] 孟宪元.可编程ASIC集成数字系统[M].北京:电子工业出版社,2003,231~243. [6] 宋万杰,罗丰,吴顺君.CPLD技术及其应用[M].西安:西安电子科技大学出社,2005,25~56.
[7] 王锁萍.电子设计自动化(EDA)教程[M].成都:成都电子科技大学出版社,2006,67~90.
[8] 楼然苗.CPLD设计指导[M].北京航空航天大学出版社,2007,223~225. [9] 彭为.数字系统设计[M].电子工业出版社,2006,61~71.
[10] 何立民.EDA应用技术选编[M].北京:北京航空航天大学出版社,2008,44~51. [11] 李华EDA实用接口技术[M].北京航空航天大学出版社2003,176~182.
20
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
9 附录
源代码
testbench: cdkz.vt
`timescale 1 ns/ 1 ps module cdkz_vlg_tst(); reg eachvec; reg clk; reg clr; reg fa; reg lo;
// wires wire [0:15] led;
cdkz i1 (
.clk(clk), .clr(clr), .fa(fa), .led(led), .lo(lo) );
initial fork $display(\); eachvec=0; clk=0; clr=0; fa=1; lo=1;
#20 clr=1; #450 clr=0; #460 clr=1; #650 fa=0; #660 fa=1; #850 lo=0;
#860 lo=1; join
always #1 clk=~clk;
always begin
@eachvec; end endmodule
21
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
彩灯控制: cdkz.v
`timescale 1 ns/ 1 ps
module cdkz(clk, clr, fa,lo, led); input clk; input clr; input fa,lo; output [0:15] led; reg div;
reg[19:0] temp;
initial div=0; initial temp=0;
always @(posedge clk) begin
temp=temp+1;
if(temp==20'b01)//二分频
//if(temp==20'b1111_1111_1111_1111_1111)//上板测试时用 begin
div=~div; temp=0; end end
sxkz s1(fa,lo, div, clr, out); xskz x1(out,clr,led); endmodule
时序控制: sxkz.v
`timescale 1 ns/ 1 ps
module sxkz(fa,lo, clk, clr, out); input fa,lo; input clk; input clr; output out; reg cllk; reg speed; reg [2:0] temp;
assign out = cllk;
initial speed=0;
always @(posedge clk,negedge clr) begin
if (clr == 1'b0)//强制清零
22
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
begin
cllk <= 1'b0; temp = 3'b000; speed=0; end else begin
if (speed == 1'b1) begin
if (temp == 3'b011)//计数到一半就输出并清零 begin
temp = 3'b000; cllk <= ~cllk; end else; end else begin
if (temp == 3'b111) begin
temp = 3'b000; cllk <= ~cllk; end else; end
if(fa==0) speed<=1; else if (lo==0) speed<=0;
temp = temp + 1'b1; end end endmodule
显示控制:xskz.v
`timescale 1 ns/ 1 ps
module xskz(clk,clr,led); input clk; input clr;
output[3:0] led; reg[15:0] led; reg[2:0] temp;
always @(posedge clk,negedge clr)
23
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
begin
if (clr == 1'b0)//强制清零 begin
led<=15'b0000000000000000; temp<=3'b000; end else begin
if (temp==3'b000) begin
led<=16'b1111_1001_1001_1111; end
else if (temp == 3'b001) begin
led<=16'b0000_0110_0110_0000; end
else if (temp == 3'b010) begin
led<=16'b1110_1101_1011_0111; end
else if (temp == 3'b011) begin
led<=16'b0111_1011_1101_1110; end
else if (temp == 3'b100) begin
led<=16'b1001_0110_0110_1001; end
else if (temp == 3'b101) begin
led<=16'b0110_1111_1111_0110; end else;
temp=temp+1;
if(temp==3'b110) temp<=0; end end endmodule
24
/ 24
武汉理工大学《FPGA原理与应用课程设计》报告
本科生课程设计成绩评定表
姓 名 专业、班级 课程设计题目:多路彩灯控制器 课程设计答辩或质疑记录: 1.彩灯控制器如何做拓展? ①可以拓展更多花型 ②可以设置花型正序和倒序 ③可以设置更多节奏,不止两种 ④用户可以自己设置花型 2.最慢的花型变化周期怎么计算的? 时钟是50MHz,会预分频221,最慢的是16分频。 因此??=1∕(50??????∕221∕16)=0.607?? 成绩评定依据: 项目 1 2 3 4 5 性 别 内 容 设计方案正确,具有可行性、创新性 设计结果(例如:硬件成果、软件程序) 态度认真、学习刻苦、遵守纪律 设计报告的规范化 课程设计答辩情况 分值 15分 25分 15分 20分 25分 最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年 月 日
verilog多路彩灯控制器设计



