FPGA入门(第三章)
- 格式:pdf
- 大小:829.90 KB
- 文档页数:22
fpga的reg的用法FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,它能够通过编程来实现各种不同的逻辑功能。
在FPGA中,寄存器(Register)是一个非常重要的组成部分。
本文将详细介绍FPGA中寄存器的用法,帮助读者更好地理解和应用FPGA技术。
第一部分:寄存器的基本概念和原理寄存器是一种用于存储和处理数据的硬件单元,在FPGA中主要用来存储中间结果和控制信号。
和传统的软件寄存器不同,FPGA中的寄存器是硬件级别的,能够提供更高的并行性和处理速度。
FPGA中的寄存器主要有两种类型:组合逻辑寄存器和时序逻辑寄存器。
组合逻辑寄存器用于处理组合逻辑电路,它将输入信号进行逻辑运算后直接输出;时序逻辑寄存器则用于处理时序逻辑电路,它在时钟信号的边沿触发后才进行计算并输出结果。
第二部分:寄存器的基本使用方法在FPGA中使用寄存器需要进行如下几个步骤:1. 寄存器的声明:需要先在代码中声明寄存器的类型和名称。
通常使用关键字"reg"进行声明。
2. 寄存器的赋值:可以使用赋值操作符"=",将输入信号或逻辑运算的结果赋值给寄存器。
例如:reg [7:0] data;data = input_a + input_b;3. 寄存器的输出:可以通过直接使用寄存器的名称,将寄存器的值作为输出信号。
例如:output_result = data;第三部分:寄存器的常见应用场景FPGA中的寄存器可以用于多种不同的应用场景,以下是其中几个常见的应用场景:1. 状态存储:寄存器可以用来存储系统的状态信息,例如计数器的值、状态机的状态等。
通过在时钟边沿更新寄存器的值,可以实现状态的切换和状态转移。
2. 数据缓存:寄存器可以用来存储中间结果,以减少传输延迟和优化性能。
通过将需要频繁使用的数据存储在寄存器中,可以提高系统的响应速度。
3. 时序控制:寄存器可以用来实现时钟分频、时钟同步等功能。
Altera FPGA开发入门教程目录目录第一章 Altera FPGA 开发流程概述 (1)1.1 你需要准备的 (1)1.2 Altera FPGA 基本开发流程 (1)第二章 QuartusII 软件安装教程 (4)第三章 完成第一个FPGA设计 (20)3.1 启动和建立QuartusII工程 (20)3.2 编辑我们的设计文件 (27)3.3 综合、布局布线 (30)3.4 引脚约束 (34)3.5 再次综合、布局布线 (37)第四章 配置FPGA (38)4.1 JTAG配置 (38)4.2 JIC烧写 (42)第一章Altera FPGA 开发流程概述本章介绍Altera FPGA的最基本最简单的开发流程,目的在于让您更直观了解FPGA开发设计过程,最快上手FPGA开发,最快找到感觉:-)1.1你需要准备的●兴趣无需多言,兴趣是最好的老师!●基本电路知识学习FPGA最好能懂一些模拟电路和数字电路的基础知识,比如知道什么是高电平、低电平、逻辑门、触发器、电阻电容、发光二极管等。
只需基本概念即可,不要求你是专家。
当然,如果你有单片机之类的开发经验,那会更好!●Verilog语言是的,我们用Verilog进行FPGA设计。
因为近年来,Verilog的使用率已经远远超过VHDL。
你不需要太精通Verilog的语法,但是你需要用硬件的思维来学习和使用Verilog。
在接下来的FPGA学习中,我们会反复强调这一点,以便带给你更深的体会。
●硬件平台纸上得来终觉浅。
一块优秀而又易用的入门级FPGA开发板,会祝您一臂之力!1.2A ltera FPGA 基本开发流程图1- 1展示了Altera FPGA的基本开发流程。
12图1- 1 Altera FPGA 基本开发流程这个流程可能是你看过类似教程中最简单的流程。
是的,为了让学者能直观了解FPGA 设计流程、快速入门,我们简化了一些东西,但它已经基本完整了。
第三章入门基础3.1 例程代码详解请下载例程:/cH6DGJ9jGU66i 访问密码 0711该工程共包括三个文件:led.qpf、led.qsf和led.v,三个文件都可以用GVIM或者记事本打开。
led.qpf:工程项目文件。
说明了生成此工程的Quartus II版本;指定顶层模块名。
led.qsf:工程配置文件。
工程中包括管脚定义、signaltap定义等。
熟练后,在此配置管脚非常方便。
led.v:工程的源代码。
该工程实现如下功能:每隔一秒,两个led灯变化一次,亮1秒,灭1秒。
我们详细讲解一下代码。
module led(clk ,rst_n ,led);上面代码定义了模块名led,该模块的内容从module开始,到endmodule为止。
该模块有三个输入输出信号,分别是clk、rst_n和led,是输入还是输出,分别是多少位宽(即多少根线)还未定义。
对于外界来说,看到的就是这三个信号,只需将这三个信号连接起来,就能使用这个模块的功能,至于内部是如何实现的、内部定义了什么信号,外界不关心。
input clk ;input rst_n ;output[1:0] led ;上面代码定义了信号的输入和输出,以及该信号的位宽。
例如,定义了clk和rst_n是输入的信号,并且每个位宽都是1位的,即只有一根线。
定义了led是输出信号,并且是2位的,即led信号有两根线。
输入信号即这个信号的激励,是由外部输入进来的;输出信号则是本模块根据功能,产生的信号。
reg [ 1:0] led ;reg [25:0] time_1s_cnt ;上面代码定义了led和time_1s_cnt的信号类型,声明他们是reg型的,并且表明led是2位宽,time_1s_cnt是26位宽(即有26根线)。
在设计代码中,一般只用到reg型和wire型。
reg型不一定就表示是寄存器。
到底是用reg型还是wire型,请记住一个原则:本module代码中,如果是在always 里产生的信号,都是用reg型,其他包括assign赋值、例化模块输出的信号都是用wire型。
FPGA应用开发知到章节测试答案智慧树2023年最新上海电力大学第一章测试1.Verilog HDL的抽象分层建模方式可划分为系统级和算法级建模方式、寄存器级建模方式、逻辑门级建模方式和晶体管开关级建模方式。
()参考答案:对2.Verilog HDL是唯一一种硬件描述语言。
()参考答案:错3.以下哪些属于可编程逻辑器件()参考答案:CPLD;PAL;GAL;FPGA4.以下哪些是FPGA和CPLD的相似点()参考答案:可采用Verilog HDL 进行电路设计;可编程逻辑器件5.以下哪些是SOPC的基本特征()参考答案:低功耗;单芯片;可能包含部分模拟电路;至少包含一个嵌入式处理器内核第二章测试1.如果线网类型变量说明后未赋值,起始缺省值是( )参考答案:z2.reg[7:0] mema[255:0]正确的赋值是 ( )参考答案:mema[5]=3’d0,3.“a=4`b11001,b=4’bx110”选择正确的运算结果()参考答案:a&&b=1;4.下列标识符中,()是合法的标识符。
参考答案:_date5.下列语句中,不属于并行语句的是()。
参考答案:case语句第三章测试1.阻塞性赋值符号为<=,非阻塞性赋值符号为=。
( )参考答案:错2.某一纯组合电路输入为in1,in2和in3,输出为out,则该电路描述中always的事件表达式应写为always@( in1,in2,in3 ); ()参考答案:对3.若某一时序电路由时钟clk信号上升沿触发,同步高电平复位信号rst清零,该电路描述中always的事件表达是应该写为always@( posedge clk or rst)。
( )参考答案:错4.Verilog HDL中内置了12种类型的基本门级元件模型。
()参考答案:对5.bufif0是Verilog HDL中内置的基本门级元件:控制信号高电平有效的三态缓冲器。
()参考答案:错第四章测试1.状态机常用状态编码有顺序编码、格雷码和独热码三种。
FPGA基础知识1、查找表LUT和编程方式第一部分:查找表LUTFPGA是在PAL、GAL、EPLD、CPLD等可编程器件的基础上进一步发展的产物。
它是作为ASIC领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路有限的缺点。
由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。
查找表可以很好地满足这一要求,目前主流FPGA都采用了基于SRAM工艺的查找表结构,也有一些军品和宇航级FPGA采用Flash或者熔丝与反熔丝工艺的查找表结构。
通过烧写文件改变查找表内容的方法来实现对FPGA的重复配置。
根据数字电路的基本知识可以知道,对于一个n输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在2n种结果。
所以如果事先将相应的结果存放于一个存贮单元,就相当于实现了与非门电路的功能。
FPGA的原理也是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。
查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。
目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有 4位地址线的的RAM。
当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入 RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
下面给出一个4与门电路的例子来说明LUT实现逻辑功能的原理。
例1-1:给出一个使用LUT实现4输入与门电路的真值表。
从中可以看到,LUT具有和逻辑电路相同的功能。
实际上,LUT具有更快的执行速度和更大的规模。
第二部分:编程方式由于基于LUT的FPGA具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合逻辑电路功能,所以适用于高速、高密度的高端数字逻辑电路设计领域。
fpga 教学大纲第一章 FPGA概述1.1 FPGA的定义与特点FPGA(Field Programmable Gate Array)是一种可编程逻辑器件,具有灵活性高、可重构性强的特点。
它由一系列可编程逻辑门和可编程内部连线构成,可以根据需要进行逻辑功能的设计和实现。
1.2 FPGA的应用领域FPGA广泛应用于数字电路设计、通信系统、嵌入式系统等领域。
在数字电路设计中,FPGA可用于实现各种逻辑功能、算法运算和信号处理等任务。
1.3 FPGA的发展历程自FPGA诞生以来,经历了多个发展阶段。
从最初的简单门级可编程器件到现在高度集成、性能强大的复杂逻辑器件,FPGA的性能和规模得到了极大的提升。
第二章 FPGA基本原理与结构2.1 FPGA的基本原理FPGA通过可编程逻辑门和内部连线的灵活配置实现逻辑功能的定制。
用户可以根据需要设计出特定的逻辑电路,并将其配置到FPGA芯片中,从而完成特定任务。
2.2 FPGA的逻辑资源FPGA芯片内部包含大量的可编程逻辑资源,如逻辑门、寄存器、乘法器等。
这些资源可以通过配置实现各种逻辑功能,并且可以根据需要进行灵活的重构。
2.3 FPGA的结构组成FPGA由可编程逻辑单元(CLB)、可编程输入输出块(IOB)、可编程互连资源(Interconnect)等部分组成。
它们相互连接并形成一种可重构的逻辑结构。
第三章 FPGA设计流程3.1 FPGA设计流程概述FPGA设计流程一般包括需求分析、系统设计、逻辑设计、综合与优化、布局布线、仿真验证等环节。
每个环节都有其独特的设计方法和工具支持。
3.2 FPGA的设计语言常用的FPGA设计语言包括硬件描述语言(如VHDL、Verilog)和高级综合语言(如C、C++)。
设计语言的选择会影响到设计的效率和可移植性。
3.3 FPGA设计工具FPGA设计离不开各种设计工具的支持,如逻辑综合工具、布局布线工具和仿真工具等。
这些工具可以提高设计效率,减少设计风险。
基于FPGA的电路设计与验证第一章:前言随着信息化和智能化的发展,数字电路设计在现代电路领域中拥有非常重要的地位。
电子工程师们通常都需要通过各种工具和软件来完成电路设计和验证工作。
但是,传统的软件设计和验证方法存在着很多局限性,例如不够实时、占用资源量大等问题。
为了解决这些问题,FPGA的出现成为数字电路设计的重要发展方向之一。
FPGA是一种可编程逻辑芯片,它可以被编程为处理特定的数字信号。
在数字电路设计领域中,FPGA设计包含了电路设计和验证两个方面。
FPGA芯片具有高度的可编程性,允许用户灵活地进行电路设计与验证。
在本文中,笔者将重点介绍基于FPGA的电路设计与验证。
第二章:FPGA的基本原理FPGA芯片是一种可重构的逻辑芯片,通常由LUT、查找表、寄存器和开关矩阵等单元构成。
LUT(Look-Up Table)是FPGA 芯片中最基本的单元之一,它是一种非常重要的逻辑门,可以用来实现任何逻辑函数。
查找表通常包含了多个LUT单元,用于实现较复杂的逻辑函数。
寄存器用于存储计算中的临时数据,而开关矩阵则被用于将各个单元连接起来。
FPGA在数字电路设计中有诸多优点。
首先,它可以快速和灵活地实现各种数字电路功能。
其次,FPGA芯片的可重构性,允许设计人员在设计阶段进行任意修改,减少了后期的修改和调试成本。
此外,FPGA芯片可以实现多种不同的通信协议,并可以与其他数字电路系统进行良好的交互,充分发挥了数字电路设计的灵活性和兼容性。
第三章:FPGA电路设计与验证FPGA电路设计通常包括以下几个阶段:框图设计、Verilog/VHDL代码编写、综合优化、布局布线等。
在设计完成后,还需要进行验证和调试等工作。
FPGA设计过程较为复杂,需要设计人员具有一定的电路知识和计算机编程技能,同时需要使用一些专业的软件工具和开发板进行验证。
在设计过程中,设计人员需要先进行框图设计,确定电路的整体架构和设计思路。
接着,设计人员需要编写Verilog或VHDL代码,完成对电路的详细设计。
FPGA入门教程FPGA入门教程1.数字电路设计入门2.FPGA简介3.FPGA开发流程4.RTL设计5.QuartusⅡ设计实例6.ModelSim和Testbench1.数字电路设计入门1.1数字电路设计数字电路设计的核心是逻辑设计。
通常,数字电路的逻辑值只有‘1’和‘0’,表征的是模拟电压或电流的离散值,一般‘1’代表高电平,‘0’代表低电平。
高低电平的含义可以理解为,存在一个判决电平,当信号的电压值高于判决电平时,我们就认为该信号表征高电平,即为‘1’。
反之亦然。
当前的数字电路中存在许多种电平标准,比较常见的有TTL、CMOS、LVTTL、LVCMOS、ECL、PECL、LVDS、HSTL、SSTL等。
这些电平的详细指标请见《补充教程1:电平标准》。
数字电路设计大致可分为组合逻辑电路和时序逻辑电路。
一般的数字设计的教材中对组合逻辑电路和时序逻辑电路的定义分别为:组合逻辑电路的输出仅与当前的输入有关,而时序逻辑电路的输出不但与输入有关,还和系统上一个状态有关。
但是在设计中,我们一般以时钟的存在与否来区分该电路的性质。
由时钟沿驱动工作的电路为时序逻辑电路。
大家注意,这两种电路并不是独立存在的,他们相互交错存在于整个电路系统的设计中。
1.1.1组合逻辑电路组合逻辑电路由任意数目的逻辑门电路组成,一般包括与门、或门、非门、异或门、与非门、或非门等。
一般的组合逻辑电路如下图:其中A,B,C,D,E,F为输入,G为输出。
1.1.2时序逻辑电路时序逻辑电路由时钟的上升沿或下降沿驱动工作,其实真正被时钟沿驱动的是电路中的触发器(Register),也称为寄存器。
触发器的工作原理和参数如下图:Register的原理和参数DClkQDQClktc-qtholdTtsutsu:建立时间,在时钟有效沿到来之前触发器数据输入应保持稳定的时间,如果建立时间不够,数据将不能在这个时钟沿被打入触发器。
它间接约束了组合逻辑的最大延时。
FPGA开发板快速教程(一)---基础知识FPGA开发板作者:古文章来源:本站原创点击数:2284 更新时间:2007-5-24前言FPGA在复杂逻辑电路以及数字信号处理领域中扮演者越来越重要的角色,SOC(片上系统)以其低功耗,高性能,低成本,高可靠性等优点成为嵌入式系统的发展趋势。
作为一个简明的教程,主要宗旨是让初学者快速地了解FPGA/SOPC (可编程片上系统)开发的流程。
目前IT技术的发展可以说是一日千里,以本人的观点来讲,如果希望在电子设计领域有所作为,则必须具备快速掌握新技术的能力。
电子设计最重要的是实践的积累,我们只要具备了一定的基础,应当马上投入实践,否则很多概念都无法真正理解。
有不少人包括我,当下决心要成为一个合格的电子设计工程师的时候,总是想如果把有关电路方面的理论都掌握了才能所向披靡,有底气参加实际项目设计。
当然如果能做到“把有关理论都掌握了”这样的境界,我想应该是很理想的,但经验发现这并不实际。
据我所知,我所认识的不少电子设计牛人,他们的理论知识可能都比不上我们的本科生,但很多不错的产品都是从他们的手中开发出来的,有了实践的经验后,他们掌握新技第二节基于Q u a r t u s I I的实例…………………………………………………………………………………实验一实验板上的K E Y1按钮控制F P G A核心板上的第一个L E D灯介绍………………………………实验二7段数码管实验…………………………………………………………………………………实验三用F P G A设计串口数据收发…………………………………………………………………………第三章S O P C的基本开发流程…………………………………………………………………………………第一节第一节S O P C v s M C U、D S P和F P G A………………………………………………………………………第二节第二节基于QuantusII和NiosII的SOPC基本开发流程……………………………………………………第三节第三节基于Q u a n t u s I I和N i o s I I的S O P C实例……………………………………………………………实验一核心板上的两个L E D交替闪烁…………………………………………………………………实验二4位7段数码管I P c o r e设计以及f l a s h的烧写教程…………………………………实验三L C D设备驱动开发………………………………………………………………………实验四A L L_T E S T综合设计……………………………………………………………………………第四章FPGA开发板中嵌入Uclinux的步骤和方法……………………………………………………第一章 CPLD/FPGA的基本知识(二)FPGA、CPLD 概述FPGA(现场可编程门阵列)与 CPLD(复杂可编程逻辑器件)都是可编程逻辑器件,它们是在PAL,GAL等逻辑器件的基础之上发展起来的。
fpga基础课程设计一、课程目标知识目标:1. 理解FPGA的基本概念、结构和原理,掌握FPGA在数字系统设计中的应用;2. 学会使用硬件描述语言(HDL)进行数字电路设计和仿真;3. 了解FPGA开发流程,掌握FPGA开发工具的使用。
技能目标:1. 能够运用所学知识,设计简单的数字系统,并进行FPGA实现;2. 培养学生的动手能力,使其具备独立进行FPGA程序编写、调试和验证的能力;3. 提高学生的团队协作能力,能够在小组合作中发挥各自优势,共同完成设计任务。
情感态度价值观目标:1. 培养学生对FPGA技术的兴趣,激发学生主动探索新技术的热情;2. 培养学生严谨、细致、负责的学习态度,养成良好的学术道德;3. 增强学生的创新意识,鼓励学生勇于尝试,提高解决问题的能力。
课程性质:本课程为实践性较强的课程,结合理论教学和实验操作,培养学生的实际操作能力和创新能力。
学生特点:学生具备一定的电子技术基础知识,对FPGA技术有一定了解,但实际操作能力较弱。
教学要求:结合学生特点,注重理论与实践相结合,通过课程学习,使学生能够掌握FPGA基础知识和技能,具备实际应用能力。
在教学过程中,注重启发式教学,引导学生主动思考,提高分析问题和解决问题的能力。
同时,关注学生的情感态度价值观培养,激发学生的学习兴趣,提高综合素质。
二、教学内容1. FPGA基本概念:介绍FPGA的发展历程、基本结构、工作原理及其在数字系统设计中的应用。
教材章节:第一章 FPGA概述2. 硬件描述语言(HDL):讲解Verilog和VHDL两种硬件描述语言的基本语法、数据类型、运算符和结构。
教材章节:第二章 硬件描述语言基础3. FPGA开发工具:介绍FPGA开发流程,学习使用ModelSim进行仿真,掌握Quartus II或Vivado等开发工具的使用。
教材章节:第三章 FPGA开发工具与环境4. 数字电路设计:学习组合逻辑电路和时序逻辑电路的设计方法,进行FPGA 实现。
第三章 HS102型FPGA/CPLD实验板HS102型FPGA/CPLD实验板(针对ALTERA公司EPM7128)是在HS102型实验板基础上根据客户的建议开发的FPGA/CPLD实验板,为了你更好使用,下面详细介绍实验板资源和原理。
实验板上主要的电路是CPLD芯片EPM7128SLC84-15,本章前一部分介绍CPLD芯片EPM7128SLC84-15电路,最后介绍了CPLD芯片EPM7064SLC44-10相关电路。
3.1实验板原理完整的原理图见光盘,该资料只提供给正式客户。
3.1电源电路图3.1-1电源原理图该实验板的CPLD芯片EPM7128的内核电压VCCINT和IO电压VCCIO 均为5V直流电压,实验板上CPLD统一采用5V直流稳压电源供电。
电源输入端POWER的输入电压为+9V,和随配的稳压电源配套使用,输出5V供CPLD和其他硬件使用为了防止电源的干扰信号,电路加了滤波电容C9、C10,另外为了防止高频信号的干扰,加了小电容C11、C12;电源电路采用高性能的LDO(低压差线形稳压器)芯片LM7805,为了使芯片稳定工作,采用了大面积敷铜和裸露铺铜;为了方便电源打开和切断,加了电源开关,拨到“开”处打开实验板电源,拨到“关”处切断电源,在插或拔串口或并口前,最好关闭电源,防止瞬时尖峰电流对你电脑相关的接口产生损坏3.2主芯片EMM7128SLC84-15电路HS102型实验板上的主芯片采用EMM7128SLC7128-15,该芯片放在PLCC84插座上,可以用启拔器拔出。
该插座兼容以下芯片:EPM7128SLC84(5v)EPM7064SLC84(5v)EPM7160SLC84 (5v)图3.2-1 EPM7128SL84-15管脚图可以参考光盘中电子版,可以任意放大和缩小图中的数字代表芯片的引脚号,其中1、2、83、84为全局输入引脚,对于它们的说明如下(该板子上全局信号1、2、83可和拨位开关相连,具体电路见后面拨位开关部分):CLK(83):全局时钟脚,这个脚的驱动能力最强,到所有逻辑单元的延时基本相同,所以如系统有外部时钟输入,建议定义此脚为时钟输入脚。
如想用其他脚为时钟输入,必须在菜单:Assign->Global project logic synthesis->Automatic global选项中把GCLK前面的勾去掉。
这样任意一个I/O脚均可做时钟输入脚。
在板子上通过JP5可以将不同时钟接到83,见下时钟电路部分的原理图。
如果使用不到时钟,将此脚接地(见后面时钟部分)。
GOE(84):全局输出使能,如有三态输出,建议由此脚来控制(也可由内部逻辑产生输出使能信号),优点和用法同上。
OE2/GCLK2(2):全局输出使能/全局时钟脚,两者皆可;但该引脚也可以作为输入使用。
GCLEAR(1):全局清零,如有寄存器清零,建议由此脚来控制(也可由内部逻辑产生清零信号),优点和用法同上。
分配这些脚和分配普通I/O脚是一样的,先在Assign->Device中选好器件型号,再在Assign>-Pin中填入你想分配的管脚号和类型,或直接在原理图中选中Input或Output,点鼠标右键,选Assign Pin,填入你想分配的管脚号,编译一遍即可。
但要注意菜单:Assign->Global project logic synthesis->Automatic global选项l中的设置。
GINPUT :全局输入端。
一些重要信号输入建议采用该脚。
如果上面的管脚不用,最好接地,1、2、84只需要把JP1上的跳冒插上(并且不要使用3芯连接线,具体有关三芯连接线见拨位开关部分)就可以接地了如果不用的管脚与外电路相连,83脚除了插对应跳冒,还要将时钟选择选择到GND(具体见时钟电路部分分析),为了保证不影响外电路,应该将此电路管脚定义为输入脚。
但不接逻辑。
CPLD主芯片通过排针JP1-JP6和外部资源连接,其中JP3和JP6为FC10插座,没有和板子实验电路连接,供使用者通过我们的配套FC10电缆就可以很方面的将CPLD的VCC、GND以及15个IO口引出,供扩展使用,详情见附录一。
排针靠近CPLD芯片的一侧是和CPLD的IO相连,另一侧和实验板上实验资源连接,如果需要对应CPLD的IO和实验资源连接,直接将对应跳冒插上就可以了;如果需要要把CPLD的IO和实验板外的电路连接,把对应跳冒拔调,自己连到外部,注意需要共地。
3.3 下载电路HS102实验板采用JTAG下载方式,采用ALTERA公司的Byteblaster 下载电路。
为了更方便操作和提高下载的稳定性(布线宽度可以更宽,布线间距更大,抗干扰性更好),我们HS102将下载电路ByteblasterMV也做到了实验板上。
你只要将并口延长线公头接电脑并口,母头接实验板上DB25插头就可以在线编程了。
3.4 时钟电路(CLK)CPLD设计中可能会用到时钟信号来控制电路的执行,HS102型实验板上提供了三种时钟电路:1)由32768的晶振OSC3和分频电路CD4060构成,可以提供2048~2Hz的十种脉冲信号,该脉冲信号是标准的方波信号。
2)由11.0592M的OSC1晶振和74HC00构成(这里74HC00主要是为了提高时钟信号的驱动能力),该电路提供11.0592M时钟信号,该信号为正弦信号,幅度约为0.4~4.63) 由用户提供的1~24Hz的OSC1晶振和74HC00构成该电路提供用户提供的晶振频率的时钟信号,该信号为正弦信号这三种时钟可以由J2上跳冒选择,注意不要同时选择两种信号;另外如果使用不到时钟,为了使83脚接地,这里J2要选择GND。
3.5 发光二极管(LED)电路实验板上提供了12个LED,它们的阴极通过排阻(起到限流的作用)接地,阳极和CPLD相连,由于LED的驱动电流只要5~10mA,所以可以直接用CPLD驱动,LED亮的条件是CPLD给相应的引脚提供高电平,即如果CPLD某引脚输出为“1”,相应的LED灯亮,如果输出为“0”,相应的LED灭。
3.6七段数码管(SMG)显示电路LED只能显示几位的状态,如果要显示数字的话就要使用七段数码管显示电路。
七段数码管是常用的输出结果显示元件,可以用来显示0-9、A-F和一些特殊字符,常用的数码管分共阳和共阴接法。
该实验板采用了1块共阴动态扫描接法的四位数码管(该数码管带小数点DP。
数码管的每段和小数点可以看着是LED,共阴接法是指8个LED的阴极接到一起作为公共段,这儿的公共段成为位码(即COM),8个LED的阳极为字码(即a,b,c,d,e,f,g,dp,有时也称段码),由于位码的需要的电流较大,为了避免通过CPLD的电路电流太大,我们用PNP三极管提供电流,PNP管的基极和CPLD相连,当CPLD提供低电平(W端),那么位码(COM端)也将获得低电平。
静态扫描接法是指每个数码管的位码和字码都单独由不同信号控制,这样占用的IO口很多,比如4位数码管就要占用32个IO口(这样通过CPLD的电流也将很大),一般实际使用中不使用该接法。
动态扫描接法是指每块数码管的对应字码接在一起,由相同信号控制,位码由不同的控制信号控制,这样可以节省CPLD的IO口,但驱动较复杂点,需要用动态扫描的方式来驱动数码管,也就是每块数码管的字码送相同的数据,不同时间内通过不同位码来控制对应位的数码管的的显示,也就是说在某一时刻只有一个或一部分数码管有效,另一时刻只有另一个或另一部分数码管有效,但由于视觉暂停的缘故,感觉数码管都有效。
(具体理解可参考后面设计实例部分)。
3.7交流频控蜂鸣器(SPEAK)蜂鸣器分为交流和直流,交流蜂鸣器必须提供交流信号才发音,并且会随交流信号频率不同发音不同(太高频率将使蜂鸣器发出的声音听不到)。
HS102型FPGA/CPLD实验板上安装一个5V交流频控蜂鸣器,为了降低CPLD的功耗,我们采用一个NPN三极管驱动蜂鸣器,CPLD提供给一个脉冲,经三极管放大来驱动交流蜂鸣器。
3.8继电器控制电路(RELAY)继电器是常用的输出控制接口,可以做直流交流信号的输出切换,达到用低压小信号控制高压电路的功能。
HS102上的继电器是5V常开继电器,控制电路如图3.8。
一般在直流线圈的两端会加上一个保护二极管,用来保护驱动输出端的三极管,因为在继电器的开和关之间,在线圈上会产生很大的反电动势,加上二极管便可以迅速将此反向高压吸收掉。
当CPLD和RELAY相连接端提供高电平,三极管S8050导通,继电器触点闭合(该继电器是常开的);反之,继电器触点保持常开状态。
图3.8对继电器控制接点说明如下:COM:common,共同点,输出控制接点的共同接点NC:normal close 常闭点,以COM位公共点,NC和COM在平时呈开路状态NO:normal open 常开点,以COM位公共点,NO和COM在平时为导通状态(因该继电器为常开型)。
通过继电器开和关动作,借助J1接口,可以用来控制外部电器(AC 220V)打开或关闭,但你在做此实验时一定要注意安全。
为了安全性,我们在电路板上用继电器控制一个低压(DC 5V)电路,COM接地,NO接发光二极管LO的阴极(阳极通过电阻和5V电源相连),NC接二极管LC(阳极通过电阻和5V电源相连),只要把J4排针用跳冒插上就可以做继电器相关的实验了。
在原理上,继电器控制交流和直流是一样的,只是控制相关电路的导通与否。
3.9 按钮电路(S)按钮用来控制程序执行时数据的输入或是特殊功能(如清零等)的设置,有时候又称按键,原理如图3.9。
按钮一端通过排阻接电源,排阻和按钮之间连接部分接入CPLD,当按钮不按下时,按钮两端处于开路状态,按钮提供高电平给CPLD,当按下时,按钮两端处于短路状态,,提供高电平给CPLD。
图3.93.10拨位开关(SW)图3.12拨位按钮有时又称为拨码开关、拨位开关,用来控制程序执行时数据的输入(一般是电平输入)或是特殊功能的设置,原理如图3.12。
拨位开关一端通过排阻接电源,排阻和拨位开关之间连接部分接入CPLD,另一端接地,当拨位开关拨到下方时,拨位开关处于开路状态,拨位开关提供低电平给CPLD,当拨位开关拨到上方时,拨位开关处于短路状态,拨位开关提供高电平给CPLD。
图3.10图3.11为了使用全局信号1、2、84,我们把这三个脚引到J3上,把SW1、SW2、SW3引到J5上(如图3.10和3.11,当需要用到1、2、84全局信号,可以使用配套的3芯线将他们相连。
(具体连接方式见附录一)RS-232信号的电平和CPLD信号的电平不一致,必须进行二者之间的电平转换。