基于FPGA模数转换控制器的设计

时间:2019-05-12 07:14:37下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《基于FPGA模数转换控制器的设计》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《基于FPGA模数转换控制器的设计》。

第一篇:基于FPGA模数转换控制器的设计

EDA课程设计任务书

1、设计题目:基于FPGA模数转换控制器的设计

2、设计目的:

(1)熟悉掌握VHDL语言设计基本知识,熟练运用QuartusⅡ软件对各单元电路进行软件模拟、仿真;

(2)学习用状态机对A/D转换器ADC0809的采样控制电路的实现,使设计能够实现8路数据的采集;

(3)通过本次课程设计的学习,复习所学的专业知识,使课堂学习的理论知识应用于实践,通过本次课程设计的实践提高我们的实践操作能力、提高分析问题和解决问题的能力。

3、设计要求:

(1)给出模数转换采样控制电路的方案设计,利用QuartusⅡ软件进行软件模拟、仿真;要求能够实现8路数据的采集。分析A/D转换原理及时序、建立项目的实施方案,并画出控制状态图;

(2)认真完成设计后,提交课程设计报告:给出控制器的方案设计,包括综合设计概况、主要技术指标、相应模块的实现方法;模块的电路原理图;所采用的器件资料,等等。报告格式参照中原工学院毕业设计指导手册。

4、设计内容:利用QuartusⅡ软件对本次设计(模数转换采样控制电路)进行文本编辑输入和仿真测试;给出仿真波形;最后进行引脚锁定并进行测试,硬件验证编程电路对ADC0809的控制功能。

中原工学院毕业设计报告纸

目录

一、概述………………………………………………………(4)

二、设计内容…………………………………………………(5)

   

     2.2

设计流程

2.2.1 建立工程文件夹和编辑设计文件 2.2.2 编译前设置 2.2.3 全程编译 2.2.4 时序仿真 2.1

设计原理

2.1.1 ADC0809引脚图及功能介绍

2.1.2 用状态机对ADC0809的采样控制电路的实现 2.1.3 对ADC0809的控制功能的电路描述的程序

三、心得体会…………………………………………………(12)

中原工学院毕业设计报告纸

一.概述

随着现代芯片工艺的改进,FPGA的等效系统门达到到几百万门,而且工作频率也随之提高。FPGA也就大量的在电子产品中出现,得到了广泛的应用。芯片设计的工艺的改进,45nm工艺的出现,使得FPGA成为必不可少的流行的实惠的器件。FPGA 最大的特点就是灵活,实现你想实现的任何数字电路,可以定制各种电路。减少受制于专用芯片的束缚。真正为自己的产品量身定做。在设计的过程中可以灵活的更改设计。而且它强大的逻辑资源和寄存器资源可以让你轻松的去发挥设计理念,其并行执行,硬件实现的方式可以应对设计中大量的高速电子线路设计需求。FPGA比DSP拥有更快的速度,可以实现非常复杂的高速逻辑,FPGA比ASIC(专用芯片)有更短的设计周期和灵活性,免去昂贵的开版费用,而且可以随时裁减,增加你想要的功能达到规避设计风险,回避芯片厂商的限制。另外知识产权的概念不断涌现,仿制别人抄袭,FPGA完全让设计的智慧得以保护。让公司的利益在较长时间内得到保证。随FPGA芯片供应商的重视和第三方公司的重视,现在有非常现成的IP核被提供,进一步缩短设计周期缩短,减小开发成本。

FPGA具有可编程逻辑器件现场可编程的灵活性,又具有门陈列器件功能强、高集成度和高速度的优点,因此在要求功能越来越强,体积越来越小,功耗越来越低的现代通信系统设计中被越来越广泛的应用。随着超大规模集成电路的发展,尤其是微电子技术和计算机技术的迅猛发展和广泛应用,数字化成为目前通信技术发展的趋势,它具有可靠性高,灵活性强,易大规模集成等优点,日益受到重视。目前,数字化的手段主要有专用集成电路(ASIC)和通用数字信号处理器(DSP)。专用集成电路优点是处理速度快,缺点是灵活性差。DSP能完成十分复杂的算法,使用灵活,易实现模块化,缺点是受处理器速度的限制。FPGA提供了实现数字信号处理的第三种解决方案,它结合了ASIC和DSP两种方式的优势,既具有很高的处理速度,又具有一定的灵活性。大规模可编程逻辑器件FPGA因其成本低,静态可重复编程和动态在系统重构等优点,已成为目前应用最为广泛的可编程专用集成电路。

Quartus II 是Altera的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可

中原工学院毕业设计报告纸

以在设计流程的各个阶段使用熟悉的第三方EDA工具.此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。

本次设计以FPGA芯片ADC0809为核心利用VHDL语言设计来实现模数转换采样控制电路。其顶层采用原理图设计方式,各模块采用VHDL语言设计,完成了对模数转换采样控制电路的软件仿真和硬件电路设计。FPGA设计人体分为系统规范、设计输入、综合、功能仿真(前仿真)、实现、时序仿真(后仿真)、配置下载等六个步骤整个系统是在QuartusⅡ环境下,利用VHDL语言实现的,在Ⅱ环境下经系统仿真实现模数转换采样控制系统。

二.设计内容

2.1 设计原理

2.1.1 ADC0809引脚图及功能介绍

ADC0809是CMOS的8位A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。转换时间约100μs,含锁存控制的8路多路开关,输出有三态缓冲器控制,单5V电源供电。

中原工学院毕业设计报告纸

图1 ADC0809的引脚图

图2 ADC0809工作时序图

上图1和图2分别是ADC0809的引脚图、A/D转换时序,下图3为其采样控制状态图。时序图中,START为转换启动控制信号,上升沿有效;一旦START有效后,状态信号EOC即变为低电平,表示进入转换状态,转换时间约100微秒。转换结束后,EOC将变为高电平。此后外部控制可以使OE由低电平变为高电平(输出有效),此时,0809的输出数据总线D[7..0]从原来的高阻态变为输出数据有效。由状态图也可以看到,在状态st2中需要对0809工作状态信号EOC进行测试,如果为低电平,表示转换没有结束,仍需要停留在st2状态中等待,直到变成高电平后才说明转换结束,在下一时钟脉冲到来时转向状态st3.在状态st3,由状态机向0809发出转换好的8位数据输出允许命令,这一状态周期同时可作为数据输出稳定周期,以便能在下一状态中向锁存器中锁入可靠的数据。在状态st4,由状态机向FPGA中的锁存器发出锁存信号(LOCK的上升沿),将0809输出的数据进行锁存。

中原工学院毕业设计报告纸

图3 控制ADC0809采样状态图

2.1.2用状态机对ADC0809的采样控制电路的实现

Quartus II 是Altera的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。利用QuartusⅡ对电路进行文本编辑输入和仿真测试;给出仿真波形。最后进行引脚锁定并进行测试,硬件验证电路对ADC0809的控制功能。本次设计描述的状态机属于Moore机,由二个主控进程构成,外加一个辅助进程,即锁存器进程LATCH1,各进程分工明确。状态及结构框图1如下所示:

中原工学院毕业设计报告纸

图4

采样状态机结构框图

在一个完整的采样周期中,状态机中最先被启动的是以CLK为敏感信号的时序进程,接着组合进程COM被启动,因为他们以信号current_state为敏感信号。最后被启动的是锁存器进程,它是在状态机进入状态st4后才被启动的,即此时LOCK产生了一个上升沿信号,从而启动进程LATCH1,将0809在本采样周期输出的8位数据锁存到寄存器中,以便外部电路能从Q端读到稳定正确的数据。

2.1.3 对ADC0809的控制功能的电路描述程序如下:

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADCINT IS PORT(D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK : IN STD_LOGIC;

EOC : IN STD_LOGIC;

ALE : OUT STD_LOGIC;

START : OUT STD_LOGIC;

OE : OUT STD_LOGIC;

ADDA : OUT STD_LOGIC;

中原工学院毕业设计报告纸

LOCK0 : OUT STD_LOGIC;

Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END ADCINT;ARCHITECTURE behav OF ADCINT IS TYPE states IS(st0, st1, st2, st3,st4);

SIGNAL current_state, next_state: states :=st0;

SIGNAL REGL

: STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL LOCK

: STD_LOGIC;

BEGIN ADDA <= '1';

Q <= REGL;LOCK0 <= LOCK;

COM: PROCESS(current_state,EOC)BEGIN

CASE current_state IS

WHEN st0=>ALE<='0';START<='0';LOCK<='0';OE<='0';

next_state <= st1;

-WHEN st1=>ALE<='1';START<='1';LOCK<='0';OE<='0';next_state <= st2;--启动采样

WHEN st2=> ALE<='0';START<='0';LOCK<='0';OE<='0';

IF(EOC='1')THEN next_state <= st3;

ELSE next_state <= st2;END IF;

WHEN st3=> ALE<='0';START<='0';LOCK<='0';OE<='1';next_state <= st4;

WHEN st4=> ALE<='0';START<='0';LOCK<='1';OE<='1';next_state <= st0;

WHEN OTHERS => next_state <= st0;

END CASE;END PROCESS COM;

REG: PROCESS(CLK)

BEGIN

IF(CLK'EVENT AND CLK='1')THEN current_state<=next_state;END IF;

END PROCESS REG;

LATCH1: PROCESS(LOCK)

BEGIN

IF LOCK='1' AND LOCK'EVENT THEN

REGL <= D;END IF;

END PROCESS LATCH1;

END behav;

中原工学院毕业设计报告纸

2.2 设计流程

2.2.1 建立工程文件夹和编辑设计文件

(1)新建文件夹ADCINT(2)输入源程序。打开QuartusⅡ,选择File→New,在New窗口中的Device Design Files中选择编译文件的语言类型为VHDL File,输入2.1.3中的程序。

(3)文件存盘。File→Save As命令,注意存盘文件名应与实体名一致。当出现下图5时,就直接单击“是”按钮,则直接创建工程。

2.2.2 2.2.3 编译前设置 全程编译

选择Processing菜单的Start Compilation项,启动全程编译。

中原工学院毕业设计报告纸

2.2.4 时序仿真

(1)打开波形编译器。

中原工学院毕业设计报告纸

(2)设计仿真时间区域。(3)波形文件存盘。

(4)将工程ADCINT的端口名选入波形编辑器中。选择View菜单中的Utility Windows项的Node Finder选项。

中原工学院毕业设计报告纸

(5)编辑输入波形(输入激励信号)。(6)总线数据格式设计,仿真参数设计。(7)启动仿真器,观察仿真结果如下:

中原工学院毕业设计报告纸

三.心得体会

第二篇:基于FPGA的交通灯控制器设计

数字系统课程设计

基于FPGA的交通控制灯设计

姓名:

学号:

班级:

摘要

随着社会的发展,城市规模的不断扩大,城市交通成为制约城市发展的一大因素。人口和汽车日益增长,市区交通也日益拥挤,人们的安全问题当然也日益重要。因此,红绿交通信号灯成为交管部门管理交通的重要工具之一。有了交通灯,人们的安全出行也有了很大的保障。自从交通灯诞生以来,其内部的电路控制系统就不断的被改进,设计方法也开始多种多样,从而使交通灯显得更加智能化。尤其是近几年来,随着电子与计算机技术的飞速发展,电子电路分析和设计方法有了很大的改进,电子设计自动化也已经成为现代电子系统中不可或缺的工具和手段,这些都为交通灯控制系统的设计提供了一定的技术基础。本课程设计运用erilog HDL语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示,并最后进行了软件实现,达到了系统要求的功能。

设计原理

1.1设计要求

设计一个交通控制器,用LED显示灯表示交通状态,并以7段数码显示器显示当前状态剩余秒数 主干道绿灯亮时,支干道红灯亮;反之亦然,二者交替允许通行,主干道每次放行35s,支干道每次放行25s。每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为5s。能进行特殊状态显示,特殊状态时东西、南北路口均显示红灯状态。用LED灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。能实现特殊状态的功能显示,1.2设计思路和原理

本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S后,主干道和支干道上的黄灯都亮启,持续5S后,主干道上红灯亮启,支干道上绿灯亮启持续25S,之后主干道和支干道上的黄灯都亮启5s,一个循环完成。循环往复的直行这个过程。其过程如下图所示:

0s主干道方向25s绿灯亮30s红灯亮黄灯亮65s支干道方向0s红灯亮35s绿灯亮黄灯亮60s65s

图1.交通灯点亮时间控制说明

1.3实现方法

本次采用文本编辑法,即利用Verilog HDL语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。设计中用两组红黄绿LED模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。

Verilog HDL程序设计

2.1整体设计

根据上章设计原理,交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,其真值表及状态转化图如下所示:

状状00状状00状状10状状11状状01状状01状状11状状10状状状状状状状状状状001状状状状状010状状状状状100状状状状状010状状状状状状状状状状100状状状状状010状状状状状001状状状状状010

图2.交通灯控制状态转化

说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。进入10状态两路黄灯亮起。结束一个循环,从00状态重新开始循环。

为实现控制与显示的功能,需要设计交通灯点亮顺序控制程序,倒数计时程序,七段数码管显示程序,数码管显示扫描程序,其系统结构图如下所示:

holdrst状状状状1Hz状状状状状状状状状状状状状状状状状状状clk1KHz状状状状状状状1Hz状状状状状状状状状状状状状状状状状状状状状 图3.交通灯控制系统结构图

其中rst为复位信号,clk为时钟信号,hold为特殊情况控制信号,输入hold时两个方向红灯无条件亮起。

2.2 具体设计

根据整体设计要求,编写各个功能部分Verilog HDL程序,设置各输入输出变量说明如下 clk: 为计数时钟; qclk:为扫描显示时钟;

en: 使能信号,为1 的话,则控制器开始工作; rst: 复位信号,为1的话,控制及技术回到初始状态;

hoid:特殊情况控制信号,为1的话,则两个方向无条件显示为红灯;

light1: 控制主干道方向四盏灯的亮灭;其中,light1[0]~light[2],分别控制主干道方向的 绿灯、黄灯和红灯;

light2: 控制支干道方向四盏灯的亮灭;其中,light2[0] ~ light2[2],分别控制支干道方向的 绿灯、黄灯和红灯;

num1: 用于主干道方向灯的时间显示,8 位,可驱动两个数码管; num2: 用于支干道方向灯的时间显示,8 位,可驱动两个数码管; counter:用于数码管的译码输出; st1,st2:数码管扫描信号。输入输出及中间变量设置如下:

module traffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);input en,clk,qclk,rst,hold,rst1;output st1,st2;output[7:0] num1,num2;output[6:0]counter;output[2:0] light1,light2;reg tim1,tim2,st1,st2;reg[1:0]state1,state2,ste;reg[2:0]light1,light2;reg[3:0]num;reg[6:0]counter;reg[7:0] num1,num2;reg[7:0] red1,red2,green1,green2,yellow1,yellow2;

1.二极管点亮控制

该部分程序的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的译码电路。此外,当检测到特殊情况(hold=‘1’)发生时,无条件点亮红灯的二极管,当检测到复位信号,两个方向计数与控制回复到00状态。因为主、支干道两个方向二极管点亮的顺序与延迟时间不同,顾编写两个独立的部分来控制,具体程序如下: 1)主干道方向 always @(posedge clk)begin

if(rst)//复位与特殊情况控制

begin light1<=3'b001;num1<=green1;end else if(hold)begin light1<=3'b100;num1<=green1;end else if(en)

begin //使能有效开始控制计数

if(!tim1)//

begin //主干道交通灯点亮控制

tim1<=1;

case(state1)

2'b00:begin num1<=green1;light1<=3'b001;state1<=2'b01;end

2'b01:begin num1<=yellow1;light1<=3'b010;state1<=2'b11;end

2'b11:begin num1<=red1;light1<=3'b100;state1<=2'b10;end

2'b10:begin num1<=yellow1;light1<=3'b010;state1<=2'b00;end

default:light1<=3'b100;

endcase

end 2)支干道方向

always @(posedge clk)begin

if(rst)//复位与特殊情况控制

begin

light2<=3'b100;

num2<=red2;

end

else if(hold)

begin

light2<=3'b100;

num2<=red2;

end

else if(en)

begin

if(!tim2)

begin

tim2<=1;

case(state1)

2'b00:begin num2<=red2;light2<=3'b100;state2<=2'b01;end

2'b01:begin num2<=yellow1;light2<=3'b010;state2<=2'b11;end

2'b11:begin num2<=green2;light2<=3'b001;state2<=2'b10;end

2'b10:begin num2<=yellow2;light2<=3'b010;state2<=2'b00;end

default:light2<=3'b100;

endcase

end

2.倒数计时

该部分程序完成二极管发光时延的计数,并将计数结果送到数码管显示电路,每切换到一个状态,计数器的初值都被重置,以实现不同颜色二极管不同的时延要求。本次设计直接用逻辑运算完成2位十进制数的计数,未采用分位器的设计。因为主、支干道上计数器的结构完全相同,顾只列出一路的程序,其具体程序如下所示:

always @(posedge clk)begin else begin //倒数计时

if(num1>0)

if(num1[3:0]==0)

begin

num1[3:0]<=4'b1001;

num1[7:4]<=num1[7:4]-1;

end

else num1[3:0]<=num1[3:0]-1;

if(num1==1)tim1<=0;

end

end

else

begin

light1<=3'b010;

num1=2'b00;

tim1<=0;

end end

3.数码管的译码及扫描显示

该段程序主要完成4个7段数码管的译码显示及扫描,使系统能正常显示主、支干道两个方向上的剩余时间。译码的时钟频率要低,为Hz级。扫描的时钟频率要高,最低不得小于人眼分辨频率50Hz,具体程序如下所示: always @(posedge qclk)begin //数码管扫描

if(rst1)

begin

st1=0;

st2=0;

end else

begin

case({st2,st1})

2'b00:begin num<=num1[3:0];{st2,st1}<=2'b01;end

2'b01:begin num<=num1[7:4];{st2,st1}<=2'b10;end

2'b10:begin num<=num2[3:0];{st2,st1}<=2'b11;end

2'b11:begin num<=num2[7:4];{st2,st1}<=2'b00;end

endcase

end end always @(posedge qclk)begin //数码管译码显示 case(num)4'b0000: counter<=7'b0111111;//0 4'b0001: counter<=7'b0000110;//1 4'b0010: counter<=7'b1011011;//2 4'b0011: counter<=7'b1001111;//3 4'b0100: counter<=7'b1100110;//4 4'b0101: counter<=7'b1101101;//5 4'b0110: counter<=7'b1111101;//6 4'b0111: counter<=7'b0000111;//7 4'b1000: counter<=7'b1111111;//8 4'b1001: counter<=7'b1101111;//9 default: counter<=7'b0111111;//0 endcase end endmodule 总体程序见程序清单所示

仿真与硬件调试

3.1 波形仿真

在QuartursⅡ软件下创建工程,新建编辑设计文件,将程序输入,整体编译后,新建波形仿真文件。设置仿真时间,时钟周期,输入输出端口,进行波形仿真。具体仿真波形图及说明如下所示: 仿真截止时间:100us; 时钟:clk 1us,qclk 0.1us 1.正常工作时波形仿真图

图4.正常工作时波形仿真图

图形说明

波形仿真主要完成了控制与计数以及数码管显示的波形图。en为低电品时,计数器置初值,高电平时开始正常控制与计数。控制发光二极管首次输出为“light1=001,light2=100”,表示主干道路绿灯亮,支杆道路红灯亮,计数器num1和num2从“00110101”开始递减计数,计数至“00000000”时,进入下一个状态,控制输出量为light=010,light2=010,表示主、支干道黄灯均亮起,计数器num1和num2从“00000101”开始计数递减,计数至”00000000”时进入下一个状态,light=100,light2=001,表示主干道路红灯亮,支杆道路绿灯亮。Counter根据num1,num2变化随时钟上升沿输出译码后的数据。由于屏幕显示大小有限,未仿真出一个完整周期。

2.特殊情况仿真波形

图5.特殊情况仿真波形

图形说明

当hold输入高电平时,在时钟上升沿的控制下,light 1与light2被强制置位为”100”,表示两路红灯均亮起

3.复位情况仿真波形

图6.复位情况仿真波形

图形说明

当rst输入高电平时,在时钟上升沿控制下,计数与控制都回到00状态,即light1=001,light2=100,计数器num1和num2从“00110101”开始递减计数。3.2 硬件调试

完成时序仿真确认无误后,进行实验箱管脚设置,注意设置完成后一定要再进行一次全局仿真,使程序真正对应于硬件输出输出。具体连接说明如下所示

输入变量:rst、clk、qclk、hold、en 其中en,hold,rst接”0-1”拨码开关,以稳定的输出可变化的电平。计数时钟clk接实验箱上1Hz时钟,扫描显示时钟qclk接125Khz时钟。

输出变量:light1[2:0]、light2[2:0]、counter[6:0]、st1、st2 其中light1[0]、light2[0]分别接绿色的发光二极管;light1[1]、light2[1] 分别接黄色的发光二极管;light1[2]、light2[2]分别接红色的发光二极管。counter[0]~counter[6],分别接七段数码管的a~f,st1、st2分别接试验箱上”4-16”译码器的低两位。

完成接线后将程序烧写到芯片上,开始功能调试。分辨改变使能信号,复位信号以及特殊情况信号,观察数码管以及发光二级管情况。

程序清单

module traffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);input en,clk,qclk,rst,hold,rst1;output st1,st2;output[7:0] num1,num2;output[6:0]counter;output[2:0] light1,light2;reg tim1,tim2,st1,st2;reg[1:0]state1,state2,ste;reg[2:0]light1,light2;reg[3:0]num;reg[6:0]counter;reg[7:0] num1,num2;reg[7:0] red1,red2,green1,green2,yellow1,yellow2;

always @(en)if(!en)begin //设置计数初值 green1<=8'b00110101;red1<=8'b00100101;yellow1<=8'b00000101;green2<=8'b00100101;red2<=8'b00110101;yellow2<=8'b00000101;end

always @(posedge clk)begin if(rst)//复位与特殊情况控制

begin

light1<=3'b001;num1<=green1;

end else if(hold)

begin

light1<=3'b100;

num1<=green1;

end

else if(en)

begin //使能有效开始控制计数

if(!tim1)//开始控制

begin //主干道交通灯点亮控制

tim1<=1;

case(state1)

2'b00:begin num1<=green1;light1<=3'b001;state1<=2'b01;end

2'b01:begin num1<=yellow1;light1<=3'b010;state1<=2'b11;end

2'b11:begin num1<=red1;light1<=3'b100;state1<=2'b10;end

2'b10:begin num1<=yellow1;light1<=3'b010;state1<=2'b00;end

default:light1<=3'b100;

endcase

end

else

begin //倒数计时

if(num1>0)

if(num1[3:0]==0)

begin

num1[3:0]<=4'b1001;

num1[7:4]<=num1[7:4]-1;

end

else num1[3:0]<=num1[3:0]-1;

if(num1==1)tim1<=0;

end

end

else

begin

light1<=3'b010;

num1=2'b00;

tim1<=0;

end

end

always @(posedge clk)begin

if(rst)//复位与特殊情况控制

begin

light2<=3'b100;

num2<=red2;

end

else if(hold)

begin

light2<=3'b100;

num2<=red2;

end

else if(en)

begin

if(!tim2)

begin

tim2<=1;

case(state1)

2'b00:begin num2<=red2;light2<=3'b100;state2<=2'b01;end

2'b01:begin num2<=yellow1;light2<=3'b010;state2<=2'b11;end

2'b11:begin num2<=green2;light2<=3'b001;state2<=2'b10;end

2'b10:begin num2<=yellow2;light2<=3'b010;state2<=2'b00;end

default:light2<=3'b100;

endcase

end

else

begin //倒数计时

if(num2>0)

if(num2[3:0]==0)

begin

num2[3:0]<=4'b1001;

num2[7:4]<=num2[7:4]-1;

end

else num2[3:0]<=num2[3:0]-1;

if(num2==1)tim2<=0;

end

end

else

begin

tim2<=0;

state2<=2'b00;

light2<=3'b010;

end

end

always @(posedge qclk)begin //数码管扫描

if(rst1)

begin

st1=0;

st2=0;

end else

begin

case({st2,st1})

2'b00:begin num<=num1[3:0];{st2,st1}<=2'b01;end

2'b01:begin num<=num1[7:4];{st2,st1}<=2'b10;end

2'b10:begin num<=num2[3:0];{st2,st1}<=2'b11;end

2'b11:begin num<=num2[7:4];{st2,st1}<=2'b00;end

endcase

end end always @(posedge qclk)begin //数码管译码显示 case(num)4'b0000: counter<=7'b0111111;//0 4'b0001: counter<=7'b0000110;//1 4'b0010: counter<=7'b1011011;//2 4'b0011: counter<=7'b1001111;//3 4'b0100: counter<=7'b1100110;//4 4'b0101: counter<=7'b1101101;//5 4'b0110: counter<=7'b1111101;//6 4'b0111: counter<=7'b0000111;//7 4'b1000: counter<=7'b1111111;//8 4'b1001: counter<=7'b1101111;//9 default: counter<=7'b0111111;//0 endcase end endmodule

总结

在设计中采用V erilog HDL语言设计交通灯控制系统, 借助其功能强大的语言结构, 简明的代码描述复杂控制逻辑设计, 与工艺无关特性, 在提高工作效率的同时达到求解目的, 并可以通过V erilog HDL 语言的综合工具进行相应硬件电路生成, 具有传统逻辑设计方法所无法比拟的优越性。

在设计过程中,觉得最难的部分是波形仿真部分,虽然程序编译通过但仿真出不了正确的波形,不是计数器无法正常计数,就是控制输出无法进入到下一个状态,每次出现问题就必须返回重新修改程序。实践证明,在编写一个较复杂的程序时,一开始一定要画流程图,弄清楚各个功能及实现它们的逻辑算法,做到心中有数后在开始下笔写编写程序。在编写的时候要尤其要注意语言的规范,如本次设计中编写的V erilog在Quartus8.1中可以正常生成时序图,而在低版本的软件中却无法生成,原因就是语言使用不规范,在解决这个问题时我总结了一些经验,首先程序要逻辑清晰,简洁明了,避免不必要的嵌套与条用,其次要适当地给程序加上注解文字,提高可读性,以方便之后的程序出错时进行查找,最后充分利用仿真软件提供的各项编译工具与报错消息,按图索骥,有方向的完成程序调试。

完成仿真后进行,进行试验箱上的硬件调试,该步骤主要是要求细心,按照引脚清单,逐一完成连线,本次设计用到两个时钟输入,注意一定要选择合适频率的时钟,以便达到期望的效果。注意观察实物的现象,看是否满足设计要求,不满足时检查是硬件问题还是程序问题,如果是程序问题,在修改完之后必须要重新编译,重新烧入。不断排查错误,直至达到满意的效果。

通过这次课程设计,熟悉了简单EDA设计的整个流程,加深了对Verilog HDL硬件描述语言的理解,提高了动手能力,并且锻炼了自己的耐心,收获颇丰,我会把在本次课程设计中学到的东西应用到今后的工作学习中。

参考资料

[1] 夏宇闻.复杂数字电路与系统的V erilog HDL设计技术 [M ].北京: 北京航空航天大学出版社, 1998 [2] 郭梯云.移动通信[M ].西安: 西安电子科技大学出版社, 1995 [3] [法]M ichelMouly, M arie Bernadet te Pautet1GSM 数字移动通信系统[M ].骆健霞, 顾龙信, 徐云霄译.北京: 电子工业出版社, 1996 [4] 张毅刚, 乔立岩.虚拟仪器软件开发环境L abW indow söCV I 610 编程指南[M ].北京: 机械工业出版社, 2002 [5] 刘国权.GSM 手机的测试[J ].中国无线电管理, 2003 [6] 俞定玖, 刘湘慧.GSM 数字蜂窝移动交换系统测试[J ].电信科学, 2000 [7] 张明.V erilog HDL 实用教程[M ].成都: 电子科技大学出版社, 1999 [8] Hyde D C.Bucknell Handbook on V erilog HDL 1Computer Science Department, Bucknell U niversity L ew is burg, 1995 [9] 康华光.电子技术基础(数字部分)[M ].北京: 高等教育出版社, 1988

第三篇:基于FPGA的彩灯控制器设计

郑州轻工业学院

可编程数字系统设计

题 目 学生姓名 专业班级 学 号 院(系)指导教师 完成时间

基于FPGA的彩灯控制器的设计 张焕焕 电子信息工程10-2班 电气信息工程学院

基于FPGA的彩灯控制器设计

摘 要

随着科技的发展 , 在现代生活中, 彩灯作为一种景观应用越来越多。而在电子电路设计领域中,电子设计自动化(EDA)工具已成为主要的设计手段,VHDL语言则是EDA的关键技术之一,它采用自顶向下的设计方法,即从系统总体要求出发,自上至下地将设计任务分解为不同的功能模块,最后将各功能模块连接形成顶层模块,完成系统硬件的整体设计。本文介绍了基于EDA技的多路彩灯控制器的设计与分析。在MAX+PLUSII环境下采用VHDL语言实现,论述了基于VHDL语言和FPGA芯片的数字系统设计思想和实现过程。电子设计自动化技术EDA的发展给电子系统的设计带来了革命性的变化,EDA软件设计工具,硬件描述语言,可编程逻辑器件使得EDA技术的应用走向普及。FPGA是新型的可编程逻辑器件,采用FPGA进行产品开发可以灵活地进行模块配置,大大缩短了产品开发周期,也有利于产品向小型化,集成化的方向发展。

关键词: VHDL 彩灯 仿真

1、概述

1.1、设计目的:

设计一个彩灯控制器,使彩灯(LED管)可以实现四种花样循环变化及两种不同频率的闪烁,有复位开关。整个系统有七个输入信号CLK,CLR,A,B,C,D,OPT,六个输出信号控制六个彩灯。OPT的高低电平控制彩灯闪烁的快慢,A,B,C,D控制各种不同花样彩灯的变换。此彩灯控制系统设定有四种花样变化。四种花样分别为:a.彩灯从左到右逐次亮起,再逐次从右到左熄灭;b.彩灯两边同时亮两个,再逐次向中间亮;c.彩灯从左到右两个两个的亮,再从右到左两个两个逐次的亮;d.彩灯中间两个亮,再同时向两边散开。

1.2、设计要求:

 掌握FPGA 的程序设计方法。 掌握硬件描述语言语法。

 程序设计完成后要求在软件中实现功能仿真。

2、系统设计

2.1、设计原理:

整个系统共有七个输入信号:基准时钟信号CLK,系统清零信号(复位信号)CLR,彩灯节奏快慢选择开关OPT;共有4个输出信号Q[3..0],分别用于控制四路彩灯。据此,我们可将整个彩灯控制器CDKZQ分为四大部分:彩灯花样控制部分、分频部分、定时部分和计数部分。当各个模块均完成上述操作之后,形成最后的四路彩灯显示系统,并且进行仿真。仿真通过,即可下载到指定的FPGA芯片里面,并进行实际连线,进行最后的硬件测试。把分频部分的不同频率的时钟信号CP输送到计数部分 ,从而控制彩灯闪烁速度的快慢 ,定时部分控制每种速度维持的时间长短。

图表 1 2.

2、设计方案:

在电路中以 1 代表灯亮,以 0 代表灯灭,由 0、1按不同的规律组合代表不同的灯光图案,同时使其选择不同的频率,从而实现多种图案多种频率的花样功能显示。在该电路中只需简单的修改程序就可以灵活地调整彩灯图案和变化方式。下面就以一个四路彩灯控制系统的实现为例进行简单说明。此四路彩灯控制系统设定有四种花样变化。彩灯图案状态变换的速度有快、慢两种。

3、程序仿真过程

start compilation先编译

generate functional simulation netlist然后生成功能仿真网络表 assignments–setting—simulation setting设置成功能仿真 然后新建一个vector waveform file 通过view—utility windows--node finder 把输入输出管脚添加进波形仿真图里 点击start simulation 得到仿真图WAVEFORM1:

由图可见:正常情况下 灯按照花样abcd的顺序循环d在80NS---120NS的高电平使得花样变为D花样,D高电平结束,灯顺序进行A花样。

OPT 在80NS---170NS高电平使得灯变换速度提高2倍 但是001100和100000这两种灯的状态任然占用了两个时钟周期,这是因为花样d和花样a状态转换之间没有立即衔接,导致220NS处CLR高电平使得灯全部清0,不再变化DIV2是二分频输出,由图可见是输入时钟CLK的二分频

4、实验结果分析

实验表明 ,此设计方法能够满足多种不同花样彩灯的变化要求 ,并且该方法便于扩展不同变化模式的彩灯花样,同时又实现了彩灯的两种不同频率的闪烁。如果不按任何按键时候,灯就按四种花样顺序循环跑,如果按下某个键再松开,比如按下C键然后松开,那么不管之前灯跑到哪个花样,按键后灯就会从C代表的花样处开始跑,然后是D花样,然后是A花样,依次循环。但是A,B,C,D认为是按下会弹起的按键,因为这个程序里,如果一直按着按键不松手,会导致灯只是反复跑一个花样。比如按着B键不松手,那么就会反复跑B花样。还有不能允许同时按下两个键,三个键,4个键,也就是说,同一时刻ABCD只能有一个是高电平,否则会出错,因为这个程序并没有防错机制。

5、心得体会

本次设计的课题是彩灯控制器的设计,当拿到这个课题的时候经过分析就知道关键是计数器和分频器的使用,分频的方法有很多种,对于同一种功能的实现,用VHDL可以采用多种方式进行描述,每种方式之间各有优劣,本次设计只采用了其中较简单的一种,应尽量用最简洁的语言写出所需功能的程序。

通过这次课程设计对EDA技术有了更进一步的熟悉,VHDL 语言和C语言等其他语言还是有很大的区别。VHDL是EDA技术的重要组成部分,其具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力,并在语言易读性和层次化、结构化设计方面,表现了强大的生命力和应用潜力。其主要的也是最大的优点就在于设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。在实际操作中发现设计和课本上的知识有很大联系,但又高于课本,一个简单的原理要把它应用以及和其他功能综合起来就有些困难。通过设计也巩固了我们的书本知识以及通过借阅书籍和上网查找资料,也丰富了自己对EDA的了解。

6、致谢

7、参考文献

[1] 周润景.基于QuartusⅡ的FPGA/CPLD数字系统设计实例[M].电子工业出版社.2007,8

[2] 潘松 黄继业.EDA技术实用教程(第二版).北京:科学出版社,2006.9 [3] 林明权 马维旻 VHDL数字控制系统设计范例.电子工业出版社2003,1 [4] 褚振勇.FPGA设计及应用(第三版)[M].西安电子科技大学出版社.2012,4

8、附录

彩灯控制器的源程序

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity horseracelamp is port(clk:in std_logic;clr:in std_logic;a:in std_logic;b:in std_logic;c:in std_logic;d:in std_logic;opt:in std_logic;q:out std_logic_vector(5 downto 0);div2:out std_logic);end;architecture one of horseracelamp is

type states is(s0,s1,s2,s3);

signal present:states;

signal q1:std_logic_vector(5 downto 0);

signal count:std_logic_vector(3 downto 0);

signal halfclk:std_logic_vector(1 downto 0);

signal clkin:std_logic_vector(1 downto 0);begin

process(clk)--------------------该进程实现二分频 begin if clk'event and clk='1' then

halfclk<=halfclk+1;end if;end process;

process(opt)---------------------该进程实现OPT高时候用原来的时钟,OPT低的时候用二分频后的时钟,信号CLKIN(0)会传递到下一个进程里

begin

if opt='0' then

clkin(0)<=halfclk(0);

else

clkin(0)<=clk;

end if;

end process;

process(clk,clr,a,b,c,d)

------------S1,S2,S3,S4分别对应

A,B,C,D四种花样,它们之间会自动按顺序循环,也

会因为A,B,C,D中某个置高而改变循环顺序,所以用了大量的IF ELSIF语句

begin if clr='1' then

present<=s0;

q1<=(others=>'0');elsif clkin(0)'event and clkin(0)='1' then

case present is

when s0=>if q1=“000000”then

q1<=“100000”;else

if count=“1100” then

count<=(others=>'0');q1<=“100001”;present<=s1;

elsif b='1'then

count<=(others=>'0');

q1<=“100001”;

present<=s1;

elsif c='1'then

count<=(others=>'0');

q1<=“110000”;

present<=s2;

elsif d='1'then count<=(others=>'0');

q1<=“001100”;

present<=s3;

else

case count is when “0000”=>q1<=“100000”;when “0001”=>q1<=“110000”;when “0010”=>q1<=“111000”;when “0011”=>q1<=“111100”;when “0100”=>q1<=“111110”;when “0101”=>q1<=“111111”;when “0110”=>q1<=“111110”;when “0111”=>q1<=“111100”;when “1000”=>q1<=“111000”;when “1001”=>q1<=“110000”;when “1010”=>q1<=“100000”;when “1011”=>q1<=“000000”;when others=>null;end case;

count<=count+1;present<=s0;

end if;end if;

when s1=>if count=“0011” then

count<=(others=>'0');q1<=“110000”;present<=s2;elsif a='1'then

count<=(others=>'0');

q1<=“100000”;

present<=s0;

elsif c='1'then

count<=(others=>'0');

q1<=“110000”;

present<=s2;

elsif d='1'then count<=(others=>'0');

q1<=“001100”;

present<=s3;

else

case count is when “0000”=>q1<=“100001”;when “0001”=>q1<=“110011”;when “0010”=>q1<=“111111”;when others=>null;end case;

count<=count+1;present<=s1;

end if;

when s2=>if count=“0110” then

count<=(others=>'0');q1<=“001100”;present<=s3;elsif a='1'then

count<=(others=>'0');

q1<=“100000”;

present<=s0;

elsif b='1'then

count<=(others=>'0');

q1<=“100001”;

present<=s1;

elsif d='1'then count<=(others=>'0');

q1<=“001100”;

present<=s3;

else

case count is

when “0000”=>q1<=“110000”;when “0001”=>q1<=“111100”;when “0010”=>q1<=“111111”;when “0011”=>q1<=“000011”;when “0100”=>q1<=“001100”;when “0101”=>q1<=“110000”;when others=>null;end case;

count<=count+1;present<=s2;

end if;

when s3=>if count=“0011” then

count<=(others=>'0');q1<=“100000”;present<=s0;elsif a='1'then

count<=(others=>'0');

q1<=“100000”;

present<=s0;

elsif b='1'then

count<=(others=>'0');

q1<=“100001”;

present<=s1;

elsif c='1'then count<=(others=>'0');

q1<=“110000”;

present<=s2;

else

case count is when “0000”=>q1<=“001100”;when “0001”=>q1<=“010010”;when “0010”=>q1<=“100001”;when others=>null;end case;

count<=count+1;present<=s3;

end if;

end case;

end if;

end process;

div2<=halfclk(0);

q<=q1;

end;

第四篇:模数和数模转换教案

第12章

模数和数模转换

【课题】

12.1 模数转换

【教学目的】

1.了解模数转换的基本概念,列举其应用。

2.了解典型集成模数转换电路的引脚功能和应用电路的工作原理。【教学重点】

模数转换过程、集成模数转换器及应用。【教学难点】

集成模数转换器及应用。【教学方法】

讲授法 讨论法 【参考教学课时】

3学时 【教学过程】

一、复习提问

模拟信号与数字信号的区别是什么?各有何优点?

二、新授内容

概述:为什么要模数转换? 12.1.1模数转换的基本概念

1.模数转换过程

(1)取样;(2)保持;(3)量化;(4)编码。2.模数转换器的误差、性能指标和分类(1)误差产生的原因

(2)A/D转换器的主要性能指标(3)A/D转换器的分类、特点 12.1.2集成模数转换器及其应用

1.ADC0804的结构及典型应用电路

三、课堂小结

1.模数转换的基本概念 2.集成模数转换器及应用

四、课堂思考

P266 思考与练习题1、2、4。

五、课后练习

P266 思考与练习题3。

【课题】

12.2 数模转换

【教学目的】

1.了解数模转换的基本概念,列举其应用。

2.了解典型集成数模转换电路的引脚功能和应用电路的工作原理。【教学重点】

数模转换的基本概念、集成数模转换器。【教学难点】

集成数模转换器。【教学方法】

讲授法 讨论法 【参考教学课时】

3学时 【教学过程】

一、复习提问

简述模数转换过程。

二、新授内容

12.2.1数模转换的基本概念

1.数模转换的基本依据。

2.输出模拟信号和输入数字信号的关系。3.数模转换器的主要参数指标。

12.2.2集成数模转换器

1.DAC0832应用说明。2.DAC0832典型应用电路。

三、课堂小结

1.数模转换的基本概念 2.集成数模转换器

四、课堂思考

P266 思考与练习题1、3。

五、课后练习

P266 思考与练习题2。

【课题】

实训项目

模数、数模转换集成电路的使用【实训目标】

1.会搭接模数、数模转换典型应用电路。2.学测试模数、数模转换集成电路的相关数据。【实训重点】

连接模数转换测试电路、测试模数转换电路。【实训难点】

测试模数转换电路。【实训方法】

实验实训 【参考实训课时】

2学时 【实训过程】

一、实训任务

任务一

连接模数转换测试电路

任务二

测试模数转换电路,将测量结果填入表格12.2 任务三

连接数模转换测试电路。

任务四

测试模数转换电路,将测量结果填入表格12.3

二、实训总结

1.画出实训电路连接图。2.列表整理实训数据。

3.分析实训问题,总结实训结果。

三、课堂思考

数模转换测试电路中,输入的数字信号与输出的模拟电压之间有什么关系?

四、课后作业

完成实训报告,写出本次实训的体会和收获。

第五篇:基于FPGA的乒乓球游戏机控制器设计

辽宁科技学院本科生毕业设计(论文)第I页

基于FPGA的乒乓球游戏机设计

摘 要

Verilog是甚高速集成电路硬件描述语言。目前,verilog已成为许多设计自动化工具普遍采用的标准化硬件描述语言。verilog语言功能性强,覆盖面广,灵活性高,具有很好的实用性。本文设计一个基于verilog的乒乓游戏机,乒乓游戏机由状态机、记分器、译码显示器与按键去抖等部分所组成。通过对各部分编写verilog程序,然后进行编译、仿真、逻辑综合、逻辑适配,最后进行编程下载,并且通过EDA实验箱的验证,实现乒乓游戏机的基本功能。

关键词:verilog;EDA;乒乓游戏机

辽宁科技学院本科生毕业设计(论文)第II页

Abstract

VERILOG is high speed IC hardware describe language.VERILOG already becomes the language of normalizing hardware describe that a lot of design automation implement adopts commonly at present.The VERILOG language function is strong.The face covering is broad, flexibility high and have the very good pragmatism.One main body of the book is designed waits for what part group is accomplished owing to that VERILOG table tennis game machine, table tennis game machine go to tremble from state machine, marker, decoding display and button.By compiling and composing VERILOG procedure to every part, then compiling, simulate, logic synthesis, logic fitting.Carry out programming time be loaded with finally.Then verification and by GW48 type EDA experiment box, realize table tennis game machine’s fundamental function.Key words: VERILOG:EDA;Table tennis game machine

辽宁科技学院本科生毕业设计(论文)第III页

目 录 绪论..............................................................1

1.1课题的背景和意义...........................................1 1.2国内外研究现状.............................................1 1.3本论文的主要内容...........................................2 2 Quartus II与Modelsim 软件简介....................................3

2.1Quartus II 简介.............................................3 2.2Modelsim简介...............................................4 3 方案选择与系统总体设计............................................6

3.1整体方案的选择.............................................6

3.1.1设计任务与要求.......................................6 3.1.2设计的原理和方法.....................................7 3.1.3芯片的选择...........................................8 3.2系统总体设计...............................................8

3.2.1乒乓游戏机的组成示意图...............................8 3.2.2本系统的逻辑分框图...................................9 系统各部分电路的详细设计.........................................10 4.1七段数码管显示译码电路....................................10 4.2按键去抖电路..............................................11 4.3状态机设计................................................11 4.3.1状态机的6种状态及状态转移..........................11 4.3.2状态机/球台控制电路.................................13

辽宁科技学院本科生毕业设计(论文)第IV页

4.4记分器设计................................................15 5 系统的整体综合与仿真.............................................16 5.1顶层文件设计..............................................16 5.2系统程序框图:............................................17 5.3整个系统的综合与仿真......................................18 5.3.1 电路符号...........................................18 5.3.2 系统仿真...........................................18 6 系统的运行与仿真过程.............................................20 6.1系统程序的编译............................................20 6.2 系统的仿真................................................22 结论...............................................................24 谢 辞..............................................................25 参考文献...........................................................26 附录...............................................................27

辽宁科技学院本科生毕业设计(论文)第1页 绪论

1.1课题的背景和意义

随着人们的物质生活越来越好了,人们开始对娱乐生活有了新的要求,特别是进入新世纪以来各种电子产品的不断出现,更是促进了我国电子行业的发展,为此,能够推出一款新的游戏产品是非常有前景的,本设计正是考虑了当前的社会现状,想设计出一款“乒乓球”游戏机,以往可能有过这方面的设计出现过,但是那些大多数都是采用的单片机等来实现的,本设计将采用最新的FPGA技术对“乒乓球”游戏机进行实现。

日常娱乐生活中,智能化的娱乐产品非常流行。FPGA具有功能强、可靠性高、使用方便、体积小及重量轻等优点。国外已广泛应用于自动化控制的各个领域。近年来,国内的FPGA技术与产品开发应用方面的发展也很快,各种电子产品已越来越多地采用FPGA控制系统且性价比高。本文从实用的角度以Altera公司的EP2C35F484I8芯片为核心设计了一种智能“乒乓球”游戏机。实践证明,该游戏机运行状况稳定、可靠,满足了智能化要求。

1.2国内外研究现状

随着社会的进步和工业技术的发展,在电子线路设计领域中,设计自动化工具已经逐步为设计者所接受,成为主要的设计手段。目前,VERILOG已成为许多设计自动化工具普遍采用的标准化硬件描述语言,掌握VERILOG语言,用VERILOG语言设计电子线路,是电子线路设计者必须掌握的基本技能。VERILOG支持数字电路的开发环境,VERILOG也支持各种设计方法:自顶向下、自底向上或混合的方法[1]。VERILOG语言功能性强,覆盖面大,灵活性高,具有很好的实用性[2]。本文设计一个基于VERILOG的乒乓游戏机,乒乓游戏机是由5个发光二极管代表乒乓球台,中间的发光二极管兼作球网,用点亮的发光二极管按一定方向移动来表示球的运动。在游戏机的两侧各设置两个开关,甲乙二人按乒乓球比赛规则来操作开关。本设计由译码显示器、记分器、状态机/球台控制器与按键去抖等部

辽宁科技学院本科生毕业设计(论文)第2页

分组成。本设计是用实验箱进行模拟乒乓机,用发光二极管代表乒乓球台,最中间的发光二极管作球网,用点亮的发光二极管按一定方向移动来表示球的运动,用按钮设置发球和接球开关。1.3本论文的主要内容

本论文的主要内容是设计一个基于FPGA的“乒乓球”游戏机,在广泛收集相关资料的基础上,对“乒乓球”游戏机进行了深入的研究,利用现场可编程门阵列FPGA完成本次设计。整个系统以ALtera公司的EP2C35芯片为核心,采用verilog HDL语言进行开发,配置了相应的输入、信号处理及显示电路,并进行仿真及验证。

本论文各章的内容如下:

第一章介绍了“乒乓球”游戏机设计的背景及意义,并简单的的阐述了目前国内外在这方面的发展现状。

第二章介绍了Quartus II 软件以及Modelsim软件的使用和特点。第三章介绍了对于系统的整体设计以及相关的设计任务和设计要求,并简单的分析了整个系统的设计流程和方法。

第四章主要是介绍在整个“乒乓球”游戏机系统中各个模块的工作原理及过程。

第五章主要是对系统进行原理图的设计和对整个系统的仿真。第六章主要是对整个的设计过程和仿真的的过程做一个简单的描述。

辽宁科技学院本科生毕业设计(论文)第3页 Quartus II与Modelsim 软件简介

2.1Quartus II 简介

Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。

Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。

Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。

辽宁科技学院本科生毕业设计(论文)第4页

2.2Modelsim简介

Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。主要特点:

• RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真; • 单内核VHDL和Verilog混合仿真; • 源代码模版和助手,项目管理;

• 集成了性能分析、波形比较、代码覆盖、数据流ChaseX、Signal Spy、虚拟对象Virtual Object、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;

• C和Tcl/Tk接口,C调试;

• 对SystemC的直接支持,和HDL任意混合 • 支持SystemVerilog的设计功能;

• 对系统级描述语言的最全面支持,SystemVerilog, SystemC, PSL;• ASIC Sign off。

ModelSim分几种不同的版本:SE、PE、LE和OEM,其中SE是最高级的版本,而集成在 Actel、Atmel、Altera、Xilinx以及Lattice等FPGA厂商设计工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以Xilinx公司提供的OEM版本ModelSim XE为例,对于代码少于40000行的设计,ModelSim SE 比ModelSim XE要快10倍;对于代码超过40000行的设计,ModelSim SE要比ModelSim XE快近40倍。ModelSim

辽宁科技学院本科生毕业设计(论文)第5页

SE支持PC、UNIX和LINUX混合平台;提供全面完善以及高性能的验证功能;全面支持业界广泛的标准;Mentor Graphics公司提供业界最好的技术支持与服务。

辽宁科技学院本科生毕业设计(论文)第6页 方案选择与系统总体设计

3.1整体方案的选择

本课题将采用Altera公司的EP2C35F484I8芯片进行基于FPGA的“乒乓球”游戏机设计。

3.1.1设计任务与要求

设计一个乒乓球游戏机,模拟乒乓球比赛基本过程和规则,并能自动裁判和计分。具体要求如下:

使用乒乓球游戏机的甲,乙双方各在不同的位置发球或击球。乒乓球的位置和移动方向可由LED显示灯和一次点亮的方向决定,球的移动速度设为0.5s移动1位。使用者可按乒乓球的位置发出相应的动作,提前击球或出界均判失分。

辽宁科技学院本科生毕业设计(论文)第7页

3.1.2设计的原理和方法

乒乓球游戏机是用5个发光二极管代表乒乓球台,中间发光二极管兼作乒乓球网,用点亮的发光二极管按一定的方向移动来表示球的运动。另外设置发球开关Af,Bf以及接球开关Aj,Bj。利用7段数码管作为记分牌。

甲乙双方按乒乓球比赛规则来操作开关。当甲方按动发球开关af时,靠近甲方的第一个灯亮,然后按顺序向乙方移动;当球过网后,乙方可以接球,接球后灯反方向移动,双方继续比赛;如果一方提前击球或未击球,则判失分,对方加分。重新发球后继续比赛。

本设计主要的设计方法是采用文本编辑法,利用verilog HDL语言描述乒乓球游戏机,并进行综合和仿真。

图3.1 系统设计流程图

辽宁科技学院本科生毕业设计(论文)第8页

3.1.3芯片的选择

在这次设计中选用的FPGA芯片是Altera公司的Cyclone(飓风)系列的芯片,型号为:EP2C35。它是基于1.5V的,采用0.13um全铜SRAM工艺、TQFP封装,有5980个逻辑单元,2个锁相环,20个M4K RAM块,其中每个RAM为4kbit,可以另加一位奇偶校验位。

3.2系统总体设计

3.2.1乒乓游戏机的组成示意图

图3.2 乒乓球游戏机组成示意图

本设计中的乒乓游戏机是由5个发光二极管代表乒乓球台,中间的发光二极管兼作球网,用点亮的发光二极管按一定方向移动来表示球的运动。在游戏机的两侧各设置两个开关,一个是发球开关af、bf;另一个是击球开关aj、bj。甲乙二人按乒乓球比赛规则来操作开关。当甲方按动发球开关af时,靠近甲方的

辽宁科技学院本科生毕业设计(论文)第9页

第一个发光二极管亮,然后发光二极管由甲向乙依次点亮,代表乒乓球的移动。当球过网后按设计者规定的球位,乙方就可以击球。若乙方提前击球或没有击中球,则判乙方失分,甲方的记分牌自动加一分。然后重新发球,比赛继续进行。比赛一直要进行到一方记分牌达到21分,该局才结束。本设计由译码显示器、按键去抖、状态机/球台控制器和记分器等部分所组成。3.2.2本系统的逻辑分框图

图3.2 系统逻辑分框图

辽宁科技学院本科生毕业设计(论文)第10页 系统各部分电路的详细设计

4.1七段数码管显示译码电路

图4.1 译码显示电路符号

七段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA或CPLD中实现。七段数码管分为共阴极和共阳极两种[8]。简而言之,对共阴极来说,公共引脚要接地,想要点亮某段数码管,就在相应的引脚加上高电平;对共阴极来说刚好相反,公共引脚提高电平,想要点亮某段数码管,就在相应的引脚加上低电平[9]。七段BCD码译码器的设计,输出信号LED7S的7位分别接如图4所示数码管的七个段,高位在左,低位在右[9]。例如当LED7S输出为“1101101” 时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1,接有高电平的段发亮,于是数码管显示“5”。

带使能信号EN的译码电路的verilog程序中,EN为高电平时,译码器正常工作;EN为低电平时,译码器输出0000000,表示数码管无显示。用选择信号赋值语句描述,将综合成组合逻辑电路。

辽宁科技学院本科生毕业设计(论文)第11页

4.2按键去抖电路

图4.2 按键电路符号

键盘的按键闭合与释放瞬间,输入的信号会有毛刺。如果不进行消抖处理,系统会将这些毛刺误以为是用户的另一次输入,导致系统的误操作。防抖电路有很多种,最简单、最容易理解的就是计数法。其原理是对键值进行计数,当某一键值保持一段时间不改变时(计数器达到一定值后),才确认它为有效值;否则将其判为无效键值,重新对键值进行计算。

4.3状态机设计

4.3.1状态机的6种状态及状态转移

本状态机有6种状态,分别是WAITSTATE、ATOB、BTOA、ASCORE、BSCORE和FINALRESULT,其含义如下表所示:

辽宁科技学院本科生毕业设计(论文)第12页

状态机的6种状态及含义:

表4.1 状态机6种状态表

状 态 含 义

WAITSTATE 等待状态,等待A或B方开球

ATOB 球从A向B方移动

BTOA 球从B向A方移动

ASCORE A得一分

BSCORE B得一分

FINALRESULT 比赛结束(最终判分),在此状态下需要按复位键,才能开始下一轮比赛

结合上表从下图中很清楚地看出乒乓游戏机比赛过程中球的移动情况,及加分方法,还可以初步了解到本状态机设计的基本思路:

图4.3 乒乓游戏机状态转移图

辽宁科技学院本科生毕业设计(论文)第13页

4.3.2状态机/球台控制电路

状态机是种很重要的时序电路,也是本设计的核心部件。状态机属于时序电路范畴,实现一个控制功能更为方便,并提高了控制速度。本次设计中状态机的符号如下图所示:

图4.4 状态机、球台控制电路符号

在本设计中,状态机用两个信号表示状态:STATE表示当前状态,TABLESTATE表示下一个状态。此状态机由两个进程构成,状态机的输入/输出引脚的作用如下表所示。其中SCOREAL[3..0]、SCOREAH[3..0]、SCOREBL[3..0]、SCOREBH[3..0]用七段BCD码译码器显示得分情况,而SCOREA、SCOREB用二进制进行加分,由记分器反馈回来。

辽宁科技学院本科生毕业设计(论文)第14页

输入/输出引脚的作用:

表4.2 输入输出引脚表

引 脚 作 用

CLK

所需时钟可由系统时钟分频得到。此时时钟决定了球移动的速度,可根据实际需要调整。

RESET 复位键,比赛重新开始,记分器清0 af、bf A和B双方的开始的开球键

aj,bj

A和B双方的击球键(可以将其与开球键合并)CLEAR 将记分器清0(给记分器的控制信号)INCREASEA、INCREASEB 分别为A、B双方的加分信号(给记分器的控制信号)SCOREAL[3..0]SCOREAH[3..0] SCOREBL[3..0]SCOREBH[3..0] SCOREA、SCOREB

A、B双方的分数(由记分器给出)

LIGHT[4..0] 接5个发光二极管

AWIN、BWIN 分别接发光二极管,表示A或B方胜出

辽宁科技学院本科生毕业设计(论文)第15页

4.4记分器设计

图4.5 计分器电路符号

记分器元件符号如上图所示,本设计中记分器比较简单,只须根据状态机给出的两个信号(INCREASEA和INCREASEB)对六个分数(SCOREAL、SCOREAH和SCOREBL、SCOREBH、SCOREA、SCOREB)进行操作。

辽宁科技学院本科生毕业设计(论文)第16页 系统的整体综合与仿真

5.1顶层文件设计

“乒乓球”游戏机系统主要由译码电路,按键去抖电路,状态机/球台控制电路等构成,下图为系统的顶层文件设计原理图:

图5.1 顶层文件设计原理图

辽宁科技学院本科生毕业设计(论文)第17页

5.2系统程序框图:

系统的程序框图如下图所示,程序清单见附录:

clk1khzClk1_2hzClk1_2hz上升沿Rst=1NY重置初值判断a,b,af,aj,bf,bj的值球的位置状态shift_1A,B接发球情况A方得分a_scoreB方得分b_scoreA方得分的各位十位a_one,a_tenB方得分的各位十位b_one,b_ten译码显示译码显示 图5.2 系统程序框图

辽宁科技学院本科生毕业设计(论文)第18页

5.3整个系统的综合与仿真

5.3.1 电路符号

乒乓球游戏机的电路符号如下图所示。输入信号:系统时钟clk1khz(输入1KHZ的时钟信号);系统复位端rst;甲方发球af;乙方发球bf;甲方击球aj;乙方击球bj;输出信号:5个LED显示模块shift[4„0];数码管地址选择信号scan[3„0];7段显示控制信号seg7[6..0]。

图5.3 系统电路符号

5.3.2 系统仿真

由于本系统的状态情况比较的多,下面就几种典型的情况进行系统的综合和仿真:

1、甲方发球后乙方提前击球,同时甲方得分:下图为仿真的结果图,观察波形可知,球的移动方向为从左到右,乙提前击球后a_core加1,即甲方得分。

图5.4 仿真结果图

辽宁科技学院本科生毕业设计(论文)第19页

2、甲方发球后,乙方在过网后击球:此情况的功能仿真结果如下图所示,观察波形可知,乙接到球后,球的运动方向变为从右到左。

图5.5 仿真结果图

3、甲方发球后,乙方没有击球:此情况的功能仿真结果图如下图所示,观察波形可知,乙没有接球,则甲方加分。

图5.6 仿真结果图

辽宁科技学院本科生毕业设计(论文)第20页 系统的运行与仿真过程

6.1系统程序的编译

1、运行新建项目向导,新建一个项目,选择之前创建好的文件夹,用来存放该项目的文件,如图6.1所示:

2、该步骤主要是为以后的仿真做准备,如图6.2所示选择仿真软件为modelsim,编程语言为verilog HDL。

辽宁科技学院本科生毕业设计(论文)第21页

3、创建完项目之后接着再新建一个verilog HDL file 用来编辑之前设计好的程序,再编辑区输入设计好的程序之后,点击编译按钮开始编译文件,通过不断的调试修改直到编译成功为止,如图6.3所示:

辽宁科技学院本科生毕业设计(论文)第22页

6.2 系统的仿真

1、点击进入仿真软件modelsim之后,点击如图6.4所示的按钮,找到之前准备好的文件,开始编译,观察信息区,直到编译成功为止。

2、在work库中找到编译成功的文件zhouyou,双击准备开始仿真,如图6.5所示:

辽宁科技学院本科生毕业设计(论文)第23页

3、如图6.6所示开始给定各个变量的初始值,以及所需的时钟信号 根据自己的需要和仿真的方便性考虑时钟的大小.4、给定完时钟信号和各个变量的初始值之后,开始点击进入仿真界面,运行开始仿真,具体的步骤如图6.7所示:

辽宁科技学院本科生毕业设计(论文)第24页

结论

本文进行乒乓游戏机软件设计,并用EDA实验箱进行验证,目标芯片是Altera公司CycloneII系列的EP2C35F484I8,本设计由状态机/球台控制器、记分器、译码显示器、按键去抖等模块组成。通过实验箱模拟乒乓球游戏机,用发光二极管代表乒乓球台,最中间的发光二极管作球网,用点亮的发光二极管按一定方向移动来表示球的运动,用按钮设置发球和接球开关。最终实现乒乓机能模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分。本设计用了16个发光二极管当乒乓球台。本设计可以再改进一下,把指示胜利2个发光二极管用数码管来代替,这样不仅可以完成之前的功能,而且可以显示比赛的局数。

通过几个月的努力,基本完成了毕业设计任务书所要求的内容,而且在实验箱上对大部分功能进行了仿真,取得了预期的结果,总之,通过自己的努力以及同学和老师的帮助,圆满的完成了本次设计任务。

辽宁科技学院本科生毕业设计(论文)第25页

谢 辞

通过两个多月的毕业设计,我学习了怎样运用FPGA设计乒乓球游戏机系统。非常感谢我的指导老师孙禾,在整个设计过程中一直耐心教导,认真负责,细心教诲,让我领略到如何实现一个系统的设计,以及如何使用书本知识到实际应用上去。在很多细节上,孙老师的指导与教诲,让人受益匪浅。

感谢四年来测控技术与仪器专业各位老师的孜孜教诲和学校的细心培养,让我能有今天的进步,在今后的工作中发挥自己的价值。

最后要感谢我身后的父亲,母亲,一直以来对我的信任和支持,有朝一日,希望可以回给他们同样的爱。

感谢辽宁科技学院四年的学习!

辽宁科技学院本科生毕业设计(论文)第26页

参考文献

[1] 边计年.用VHDL设计电子线路[M].北京:清华出版社,2000:2.[2] 黄任.VHDL入门•解惑•经典实例•经验总结[M].北京:北京航天大学出版社,2005:3-5,115.[3] 尹常永.EDA技术/电子设计实验讲义[M].西安:西安电子科技大学出版社,2004:3.[4] 杨刚.现代电子技术—VHDL与数字系统设计[M].北京:电子工业出版社,2004:6.[5] 甘历.VHDL应用与开发实验[M].北京:科学出版社,2003:4.[6] 侯伯亨.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,1999:27.[7] 潭会生,张昌凡.EDA技术及应用[M].西安:西安电子科技大学出版社,2004:81,233,256.[8] 王振红.VHDL数字电路设计与应用实践教程[M].北京:机械工业出版社,2005:35,37.[9] 李宜达.数字逻辑电路设计与实现[M].北京:科学出版社,2004:144.辽宁科技学院本科生毕业设计(论文)第27页

附录

1、系统程序:

module zhouyou(shift,scan,seg7,clk1khz,rst,af,aj,bf,bj);output[4:0] shift;output[3:0] scan;output[6:0] seg7;input clk1khz;input af;input aj;input bf;input bj;input rst;reg[4:0] shift;reg[3:0] scan;reg[6:0] seg7;reg clk1_2hz;reg[3:0] a_score,b_score;reg[1:0] cnt;reg[3:0] data;reg[3:0] a_one,a_ten,b_one,b_ten;reg[7:0] count;reg a,b;

辽宁科技学院本科生毕业设计(论文)第28页

reg[4:0] shift_1;

always@(posedge clk1khz)begin if(count=='b1111_1010)begin clk1_2hz<=~clk1_2hz;count<=0;end else begin count<=count+1;end

if(cnt=='b11)begin cnt<='b00;end else begin cnt<=cnt+1;end end

always@(posedge clk1khz)begin if(rst)begin a_score<=0;b_score<=0;a<=0;b<=0;shift_1<=0;end else begin

辽宁科技学院本科生毕业设计(论文)第29页

if(!a&&!b&&af)begin a<=1;shift_1<='b10000;end else if(!a&&!b&&bf)begin b<=1;shift_1<='b00001;end else if(a&&!b)begin if(shift_1>'b00100)begin if(bj)begin a_score<=a_score+1;a<=0;b<=0;shift_1<='b00000;end else begin shift_1[4:1]<=shift_1[4:1]>>1;end end else if(shift_1=='b0)begin a_score<=a_score+1;a<=0;b<=0;end else begin if(bj)begin a<=0;b<=1;end

辽宁科技学院本科生毕业设计(论文)第30页

else begin shift_1[4:1]<=shift_1[4:1]>>1;end end end else if(b&&!a)begin if(shift_1<'b00100&&shift_1!='b0)begin if(aj)begin b_score<=b_score+1;a<=0;b<=0;shift_1<='b00000;end else begin shift_1[3:0]<=shift_1[3:0]<<1;end end else if(shift_1=='b0)begin b_score<=b_score+1;a<=0;b<=0;end else begin if(aj)

辽宁科技学院本科生毕业设计(论文)第31页

begin a<=1;b<=0;end else begin shift_1[3:0]<=shift_1[3:0]<<1;end end end end shift<=shift_1;if(a_score=='b1011&&!rst)begin a_score<=a_score;b_score<=b_score;end if(b_score=='b1011&&!rst)begin a_score<=a_score;b_score<=b_score;end end always@(posedge clk1khz)begin case(a_score[3:0])'b0000:begin a_one<='b0000;a_ten<='b0000;end 'b0001:begin a_one<='b0001;a_ten<='b0000;end 'b0010:begin a_one<='b0010;a_ten<='b0000;end 'b0011:begin a_one<='b0011;a_ten<='b0000;end 'b0100:begin a_one<='b0100;a_ten<='b0000;end 'b0101:begin a_one<='b0101;a_ten<='b0000;end 'b0110:begin a_one<='b0110;a_ten<='b0000;end

辽宁科技学院本科生毕业设计(论文)第32页

'b0111:begin a_one<='b0111;a_ten<='b0000;end 'b1000:begin a_one<='b1000;a_ten<='b0000;end 'b1001:begin a_one<='b1001;a_ten<='b0000;end 'b1010:begin a_one<='b0000;a_ten<='b0001;end 'b0011:begin a_one<='b0001;a_ten<='b0001;end default:begin a_one<='bx;a_ten<='bx;end endcase

case(b_score[3:0])'b0000:begin b_one<='b0000;b_ten<='b0000;end 'b0001:begin b_one<='b0001;b_ten<='b0000;end 'b0010:begin b_one<='b0010;b_ten<='b0000;end 'b0011:begin b_one<='b0011;b_ten<='b0000;end 'b0100:begin b_one<='b0100;b_ten<='b0000;end 'b0101:begin b_one<='b0101;b_ten<='b0000;end 'b0110:begin b_one<='b0110;b_ten<='b0000;end 'b0111:begin b_one<='b0111;b_ten<='b0000;end 'b1000:begin b_one<='b1000;b_ten<='b0000;end 'b1001:begin b_one<='b1001;b_ten<='b0000;end 'b1010:begin b_one<='b0000;b_ten<='b0001;end 'b0011:begin b_one<='b0001;b_ten<='b0001;end default:begin b_one<='bx;b_ten<='bx;end

辽宁科技学院本科生毕业设计(论文)第33页

endcase

case(cnt[1:0])'b00:begin data<=b_one;scan<='b0001;end 'b01:begin data<=b_ten;scan<='b0010;end 'b10:begin data<=a_one;scan<='b0100;end 'b11:begin data<=a_ten;scan<='b1000;end default:begin data<='bx;scan<='bx;end endcase

case(data[3:0])'b0000: seg7[6:0]=7'b1111110;'b0001: seg7[6:0]=7'b0110000;'b0010: seg7[6:0]=7'b1101101;'b0011: seg7[6:0]=7'b1111001;'b0100: seg7[6:0]=7'b0110011;'b0101: seg7[6:0]=7'b1011011;'b0110: seg7[6:0]=7'b1011111;'b0111: seg7[6:0]=7'b1110000;'b1000: seg7[6:0]=7'b1111111;'b1001: seg7[6:0]=7'b1111011;

辽宁科技学院本科生毕业设计(论文)第34页

default: seg7[6:0]='bx;endcase end

endmodule

下载基于FPGA模数转换控制器的设计word格式文档
下载基于FPGA模数转换控制器的设计.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    基于FPGA的彩灯控制器设计(5篇)

    《EDA原理及应用》 课程设计报告 课题名称: 基于数码管显示的彩灯控制器 院 系: 机电工程学院专 业: 电子信息工程学生姓名: 陈纳爽 学生学号: 201033285123 彩灯及数码管显示......

    基于FPGA的交通红绿灯控制器

    基于FPGA的交通红绿灯控制器 姓名: 学号:专业: 班级: 目录 1.设计思路................................................... 3 1.1设计思想....................................

    基于FPGA的(带有紧急情况处理的)交通灯控制器的设计.

    学号成绩 评语 《现代数字系统设计》课程论文 题目基于FPGA的(带有紧急情况处理的交通灯控制器的设计 作者班级 院别信息与通信工程专业电子信息工程完成时间 2011年5月12日......

    第11章 数模与模数转换——讲义

    第11章数-模和模-数转换 【学时分配】 2学时,周二1~2节。 【教学目的与基本要求】 1、熟练掌握A/D与D/A转换的电路结构和工作原理。主要是倒梯形电阻网络、逐次逼近型、双......

    双电源自动转换控制器英文文献

    Modeling, Simulation, and Reduction of Conducted Electromagnetic Interference Due to a PWM Buck Type Switching Power Supply A. Farhadi Abstract: Undesired ge......

    FPGA抢答器设计报告

    Vb开办上海电力学院 课程设计报告 信息工程系 抢答器设计报告 一、 设计目的: 本课程的授课对象是电子科学与技术专业本科生,是电子类专业的一门重要的实践课程,是理论与实践相......

    基于传递函数的控制器设计

    【实验名称】 基于传递函数的控制器设计 【实验目的】 1.熟练掌握用MATLAB语句绘制频域曲线。 2.掌握控制系统频域范围内的分析校正方法。 3.掌握用频率特性法进行串联校正设......

    数字PID控制器设计

    数字PID控制器设计 设计任务: 设单位反馈系统的开环传递函数为: 设计数字PID控制器,使系统的稳态误差不大于0.1,超调量不大于20%,调节时间不大于0.5s。采用增量算法实现该PID控制......