可编程逻辑控制器件

2024-08-24

可编程逻辑控制器件(精选八篇)

可编程逻辑控制器件 篇1

当前电子系统的设计正朝着速度快、容量大、体积小、质量轻、用电少的方向发展。推动该潮流迅猛发展的决定性的因素就是使用了现代化的EDA设计工具, 使电子系统的电路设计变得更简单, 设计周期大大缩短。设计人员在不必更改硬件电路设计的前提下, 只须要修改可编程逻辑电路的功能和用户软件, 就可以完成面向不同应用需求的系统设计了。PLD (Programmable Logic Devices) 是可以由用户进行编程实现所需逻辑功能的数字集成电路。利用PLD内部的逻辑结构可以实现任何布尔表达式或寄存器函数。它能完成任何数字器件的功能, 上至高性能CPU, 下至简单的74 电路, 都可以用PLD来实现。FIFO (First In First Out) 是一种在电子系统得到广泛应用的器件, 通常用于数据的缓存和用于容纳异步信号的频率或相位的差异。

二、PLD和Max+plus II简介以及FIFO的设计原理

PLD是一种由用户根据自己要求来构造逻辑功能的数字集成电路, 一般可利用计算机辅助设计, 即用原理图 状态机 布尔方程 硬件描述语言 (HDL) 等方法来表示设计思想, 经一系列编译或转换程序, 生成相应的目标文件, 再由编程器或下载电缆将设计文件配置到目标文件中, 这时可编程器件就可作为满足用户要求的专用集成电路使用了。Max+plus II是Altera公司推出的第三代PLD开发系统, 主要用于设计新器件和大规模CPLD/FPGA。使用MAX+PLUSII的设计者不需精通器件内部的复杂结构, 因而被公认为是最易使用, 人机界面最友好的PLD开发软件。

FIFO的基本单元是寄存器, 作为存储器件, FIFO的存储能力是由其内部定义的存储寄存器的数量决定。现在的FIFO存储器采用SRAM单元来实现。它是基于带两个指针的环行FIFO结构的。要写入的数据的存储地址放在写指针中, 而FIFO结构中要读出的第一个数据的地址放在读指针中。从硬件上来实现循环存储器, 可以用双端口的SRAM来存取数据。

三、异步FIFO的设计

FIFO (先进先出队列) 是一种在电子系统得到广泛应用的器件, 通常用于数据的缓存和用于容纳异步信号的频率或相位的差异。FIFO的实现通常是利用双口ram和读写地址产生模块来实现的。FIFO的接口信号包括异步的写时钟 (wr_clk) 和读时钟 (rd_clk) 、与写时钟同步的写有效 (wren) 和写数据 (wr_data) 、与读时钟同步的读有效 (rden) 和读数据 (rd_data) 。为了实现正确的读写和避免FIFO的上溢或下溢, 通常还应该给出与读时钟和写时钟同步的FIFO的空标志 (empty) 和满标志 (full) 以禁止读写操作。写地址产生模块根据写时钟和写有效信号产生递增的写地址, 读地址产生模块根据读时钟和读有效信号产生递增的读地址。FIFO的操作如下:在写时钟wr_clk的升沿, 当wren有效时, 将wr_data写入双口RAM中写地址对应的位置中;始终将读地址对应的双口RAM中的数据输出到读数据总线上。图1 给出了FIFO的接口信号和内部模块图。

四、系统仿真与测试

本文中的设计方案经过仿真与测试, 证明了系统实现了FIFO的基本要求。通过实践, 我们发现编译的结果与仿真测试的结果一致, 同时验证了基于CPLD设计的FIFO系统具有非常高效率以及正确率, 得到了比较满意的结果。

五、总结与展望

通过软件仿真, 我们可以事先验证设计的正确性。在PCB完成以后, 还可以利用PLD的在线修改能力, 随时修改设计而不必改动硬件电路。使用PLD来开发数字电路, 可以大大缩短设计时间, 减少PCB面积, 提高系统的可靠性。PLD的这些优点使得PLD技术在90 年代以后得到飞速的发展, 同时也大大推动了EDA软件和硬件描述语言 (HDL) 的进步。

摘要:随着电子技术的不断发展与进步, 电子系统的设计方法发生了很大的变化, 那些只提供特定的逻辑功能, 不能够由用户根据具体设计的需要修改的成品逻辑器件已经慢慢被可编程逻辑控制器件所替代。本文介绍PLD可编程逻辑器件的设计开发及相关软件的使用。并通过PLD的应用设计FIFO。在传统设计的基础上提出一种新颖的电路结构并对其进行综合仿真和实现。首先介绍异步FIFO的概念、应用及其结构, 然后分析实现异步FIFO的难点问题及其解决办法;详细介绍了每一个过程的设计思想和处理过程。使用Max+plus II和ALTERA公司的实验箱对FIFO进行设计。

关键词:CPLD,Max+plusII,异步FIFO

参考文献

[1]王彩凤, 胡波, 李卫兵, 杜玉杰.EDA技术在数字电子技术实验中的应用[J].实验科学与技术, 2011.01:4-6+110

[2]幸云辉, 杨旭东.计算机组成原理实用教程.清华大学出版社, 2004.1

[3]王金明.数字系统设计与Verilog HDL等编著.电子工业出版社出版, 2004.3

可编程逻辑控制器件 篇2

可 编 程 逻 辑 器 件

《实验总结》

学号:

姓名:

班级:

EDA试验心得体会

当看到这门课的时候,我最初的感觉是很无语,书本上一大堆看不懂的东西,没有接触过的VHDL语言和一些电路图和实体,听起来也是一塌糊涂,对EDA技术很陌生,也感到很茫然,也没有信心,当接触到可编程器件的时候,看到大家同样感到很迷惘。

随后在深入的学习中发现书本资料通过大量的图示对PLD硬件特性与编程技术进行了形象的讲解,不仅融合了之前学习的关于电路设计的知识还将EDA的技术加入其中。对VHDL语言的详尽讲解更是让我深刻理解了VHDL语言的编程原理。由于本门课程是一门硬件学习课程,所以实验必不可少。通过课程最后实验,我体会一些VHDL语言相对于其他编程语言的特点。在接触VHDL语言之前,我已经学习了C语言,汇编语言,而相对于这些语言的学习,VHDL 具有明显的特点。这不仅仅是由于VHDL 作为一种硬件描述语言的学习需要了解较多的数字逻辑方面的硬件电路知识,括目标芯片基本结构方面的知识更重要的是由于VHDL 描述的对象始终是客观的电路系统。由于电路系统内部的子系统乃至部分元器件的工作状态和工作方式可以是相互独立、互不相关的,也可以是互为因果的。这表明,在任一时刻,电 路 系 统 可 以 有 许 多 相关 和不相关的事件同时并行发生。例如可以在多个独立的模块中同时入行不同方式的数据交换和控制信号传输,这种并行工作方式是任何一种基于CPU 的软件程序语言所无法描绘和实现的。传统的软件编程语言只能根据CPU 的工作方式,以排队式指令的形式来对特定的事件和信息控制或接收。在CPU 工作的任一时间段内只能完成一种操作。因此,任何复杂的程序在一个单CPU 的计算机中的运行,永远是单向和一维的。因而程序设计者也几乎只以一维的思维模式就可以编程和工作了。在试验箱上,编写相应的软件即可,否则,只在计算机上模拟调试软件,则无法了解单片机接口中各种控制信号的使用。还可帮助学会分析问题和解决问题的能力。这在单片机实验报告中都要体现出来。

这门课是一门理论性和实践性都很强的专业基础课,也是一门综合性的技术基础学科,它需要程序语言、数学、物理学、电子学、力学、机械等知识,同时还要掌握各种物理量的变换测定,以及实验装置的设计和数据分析等方面所涉及的基础理论。许多测试理论和方法只有通过实际验证才能加深理解并真正掌握。实验就是使学生加深理解所学基础知识,掌握各类典型传感、记录仪器的基本原理和适用范围;具有测试系统的选择及应用能力;具有实验数据处理和误差分析能力;得到基本实验技能的训练与分析能力的训练,使学生初步掌握测试技术的基本方法,具有初步独立进行电子信息工程测试的能力,对各门知识得到融会贯通的认识和掌握,加深对理论知识的理解。实验课是本门课程的重要环节,其目的是培养学生的分析和解决实际问题的能力,从而掌握机械工程测试技术手段,为将来从事技术工作和科学研究奠定扎实的基础。

通过本门课程实验,以下能力得到了较大的提高:

了解了可编程逻辑器件操作的原理和应用,以及试验箱及软件编译环境的使用的注意事项及各种测试中不同问题的处理方法。

采用可编程逻辑器件实现数字滤波 篇3

Altera公司的FLEX10K是工业界第一个嵌入式的P L D, 具有高密度、低成本、低功率等优点。器件的主要结构特点是除主要的逻辑阵列块 (L A B) 之外, 首次采用了嵌入阵列块 (EAB) 。每个阵列块包含8个逻辑单元 (LE) 和一个局部互连。一个LE又由四输入查找表 (L U T) 、一个可编程寄存器和专用的载运和级联功能的信号通道所组成。

随着设计方法的不断完善, 不仅需要简化设计过程, 而且, 越来越需要降低系统体积和成本, 提高系统的可靠性, 缩短研制周期, 于是希望有一种由很多厂家都可提供的, 具有一定连线的结构和已封装好的全功能的标准电路。由于共同性强, 用量大, 所以成本也不高。这种器件可以由用户根据需要自行完成编程设计工作, 用某种编程技术自己“烧制”使内部电路结构实现再连接, 也就是说用户既是使用者又是设计者和制造者, 这种器件就是P L D, 它的引入就形成了半定制电路设计方法的可编程FLEX10K器件中, 把每一组逻辑单元 (8个LE) 组成一个逻辑阵列块 (LAB) , 所有的逻辑阵列块 (L A B) 排成行和列。在一行里还包含一个单一的EAB。多个LAB和多个E A B采用快速通道互相连接。

嵌入式阵列块 (EAB) 是FLEX10K系列器件在结构设计上的一个重要部件。它是一个输入端口和输出端口都带有寄存器的一种灵活的RAM块, 嵌入阵列块 (E A B) 组成的规模和灵活性对比较多的内存是适宜的。功能包括乘法器、向量的标准和误差矫正电路等。在应用中, 这些功能又能够联合完成数字滤波器和微控制器的功能。

采用可编程的带有只读平台的嵌入阵列块 (E A B) 在配置期间可执行逻辑功能并建立一个大的查找表 (L U T) , 在这个查找表里用查找的结果执行组合逻辑函数, 而不用计算它们。显然, 用这种组合逻辑函数执行比通常在逻辑里应用算法执行要快, 而且专用E A B容易应用, 并且快速提供可能预测的延迟。

以下是应用Altera公司的FLEX10K系列C P L D快速完成卷积的方法实现有限冲激响应 (F I R) 滤波器的设计。

查表法实现卷积运算方法。

有限冲激响应 (F I R) 滤波器的基本结构如是一个分节的延时线, 把每一节的输出加权累加, 得到滤波器的输出。数学上表示为:

根据上式, 可以看出F I R数字滤波器涉及到大量的卷积运算, 使用常规硬件实现时会占用大量的资源。通过充分利用F L E X 1 0 K系列芯片所具有的查表结构, 将卷积运算转化为查表移位求和来实现。例如:对于式:

假设x和h都是无符号整型二进制数, 宽度两位, 取值两位如下:

中间数据p1 (n) 中的4个数据实际上是乘数x (n) 的最低位比特与h (n) 相乘的结果, 并且该值不是0就是h (n) 。进一步考虑, 中间数据p 1和p 2的值, 既“1 0 0”和“011”是由不同的h (n) 之和构成, 而对h (n) 的选择是由乘数x (n) 的相同位的比特决定的。例如上图x (n) 的最低位为1001, 则p1的值为h (1) +h (4) ;其高位为1010, 则p1的值为h (1) +h (3) 。因此利用A l t e r a公司FLEX器件中的查找表 (LUT) 结构, 预先将h (n) 的各种组合存入查找表, 则上例中的原需4次乘法和3次加法的卷积运算转化为1次加法。图3显示了用查找表实现该例的结构。

用查表法实现卷积运算时, 有并行和串行两种结构。图1中为并行结构, 其中两个L U T是完全相同的。在并行结构中, LUT的数量根据x (n) 的数据宽度决定。一位对应一个L U T, 这样速度达到最大, 在FLEX10K的结构中提供了两条专用数据通道, 即进位链和级联链, 通过级联链相邻的L U T可以用来并行计算函数的各个部分。

利用FLEX10K芯片实现FIR数字滤波器。

FELEX10K系列芯片具有查找表结构, 利用其实现采用全局并行的F I R数字滤波器, 也即将输入x (n) 经过不同的延迟后同时进行处理。

控制器模块 (c o n t r) 的作用是产生控制信号对延迟、并串转换、抽头系数、移位相加模块进行控制, 以使它们按一定的形式组合在一起实现滤波器功能。控制器模块在接收到A/D转换结束信号后, 依次产生移位寄存器使能信号、并行到串行转换的装入信号、移位相加的装入信号、加减控制信号和滤波结果输出信号等各种控制信号, 使上述各个模块按照一定的时序进行操作, 从而完成滤波功能。时延环节模块 (shift-reg) 的作用为使A/D转换后的数据通过不同的触发器, 进而产生不同的延迟。并/串转换模块 (p-s-ff) 的作用是将通过时延模块产生的不同延迟分别同时转换为查找表的串行地址, 提供给抽头系数模块。抽头系数模块 (sub-rom) 将抽头系数的各种组合固化在ROM中。它的地址输入端接收并/串转换模块的串行输出, 然后查表得到卷积的中间数据.。移位相加模块通过将中间数据移位相加而实现两个数相乘的功能。

摘要:介绍了一种利用ALTERA公司的复杂可编程逻辑器件 (CPLD) 快速卷积法实现数字滤波器的设计。

关键词:CPLD,数字滤波器,信号处理

参考文献

[1]刘宝琴.Altera可编程逻辑器件及其应用[M].北京:清华大学出版社, 1995.

[2]彭启宗.DSP与实时数字信号处理法[M].电子科技大学出版社, 1995.

[3]Data Book1996.ALTERA, 1998.

可编程逻辑控制器件 篇4

1.1时钟控制

在复杂的数字电路系统中, 常常会出现这种情况:一个数字系统有时会需多个时钟信号, 为了保证不同时序模块时钟的同步, 系统的外部只能提供一个基准时钟源, 如在设计数字钟时, 数字钟的计数时钟和控制LED数码管位扫描的时钟就是两个不同的时钟信号, 前者的频率是1Hz, 后者的频率要求50~100Hz之间, 而系统外部只提供一个基准时钟信号。对于这种情况, 可以选一个合适高频的基准时钟, 对此时钟进行分频, 分别得到两个不同的时钟信号。当出现设计系统需要多个时钟, 而且, 各时钟频率之间没有整数倍关系时, 可以选一个2倍于最高频率的时钟, 并对此时钟进行采样, 再分别得到所需的各时钟频率。而且此时得到的各时钟频率能满足系统设计要求, 相位还同步。此方法能有效增强设计系统的稳定性。

对于多时钟数字系统, 在设计时要正确处理时钟域之间的接口, 不使用FPGA内部组合逻辑产生的信号作为时钟, 以降低功耗需求。VHDL语言的代码描述为:

门控时钟描述的代码:

GateClk<=input1 and clk ;

Process (GateClk)

Begin

If (GateClk’event and GateClk=’1’) then

If (load=’1’ ) then

Out_data<=data;

End if;

End if;

End process;

时钟使能描述的代码:

enable<= input1 and load;

Process (enable, clk)

Begin

If (clk’event and clk=’1’) then

If (enable=’1’) then

Out_data<=data;

End if;

End if;

End process;

1.2异步/同步时序逻辑

在时序逻辑电路设计时, 可以采用同步电路和异步电路两种设计方法。同步时序电路使用组合逻辑和触发器实现电路功能, 电路的主要信号和输出信号都由统一的基准时钟驱动触发器产生, 可以避免毛刺与竞争冒险。而异步电路采用组合逻辑, 没有统一的时钟信号, 容易产生毛刺和竞争冒险, 电路不稳定。

从电路延迟方面考虑, 异步电路是通过逻辑门电路来实现的, 延迟难以预测, 而同步设计使用计数器或触发器实现延时的, 用于计数器和触发器的时钟稳定性决定了同步时序电路的性能, 现在FPGA内部有专用的时钟资源, 如专用的时钟管理模块、全局时钟布线资源等, 其时钟的质量与性能是可以得到保障的。从资源使用方面考虑, FPGA是以逻辑单元衡量电路面积的, 所以同步设计并不比异步设计浪费资源。目前, 商用的FPGA都是面向同步的电路设计而优化的, 同步时序电路可以很好地避免毛刺, 提倡在设计中采用同步逻辑电路。特别注意, 不同的时钟域的接口需要进行同步。

1.3寄存器/锁存器

寄存器是由具有存储功能的触发器组合起来构成, 用来存放二进制数据或代码的电路, 任何现代数字系统都必须把需要处理的数据和代码先寄存起来, 以便随时取用。对于边沿触发存储单元, 在基于寄存器的设计里, 竞争冒险情况较少甚至不存在, 控制信号和寄存器输入信号上的毛刺不易造成影响, 信号可在一个周期里准确寄存。锁存器是电平敏感存储单元, 它不象寄存器数据存储控制在一个时钟周期内完成, 电路稳定性差。在FPGA器件中集成了很多的寄存器, 相对于利用寄存器完成的设计, 利用锁存器来完成, 这不但逻辑复杂, 而且性能较差。因此, 当设计一个组合逻辑时, 设计者要避免由于VHDL 设计风格的问题, 无意识形成一个锁存器。例如, 当case或者if语句不能完全覆盖所有可能的条件时, 组合反馈可能形成一个锁存器。VHDL语言的代码描述为:

异步复位的寄存器代码:

library ieee;

use ieee.std_logic_1164.all;

entity registerAsyn is

port ( reset, clk, data:in std_logic;

data_out:out std_logic ) ;

end registerAsyn;

architecture behave of registerAsyn is

begin

process (clk, reset, data)

begin

if (reset='1') then q<='0';

else

if (clk'event and clk='1') then

data_out <=data;

end if;

end if;

end process;

end behave;

异步复位锁存器代码:

library ieee;

use ieee.std_logic_1164.all;

entity latchAsyn is

port ( reset, enable, data:in std_logic;

data_out:out std_logic ) ;

end latchAsyn;

architecture behave of latchAsyn is

begin

process (enable, reset, data)

begin

if (reset='1') then q<='0';

elsif ( enable='1') then

data_out <=data;

end if;

end process;

end behave;

1.4状态机的设计

在数字电路的应用设计中, 控制模块可以用有限状态机, 也可以用CPU。有限状态机可以根据系统要求专门设计, 而CPU是通用的电路控制模块。比较而言, 有限状态机比CPU灵巧, 占用硬件资源少。有限状态机越来越被系统设计师青睐。在FPGA设计应用中, 对于多种状态转换的数字系统, 经常使用状态机来控制。有限状态机按输出方式可分为Moore型和Mealy型, Mealy型状态机输出不仅与当前状态有关, 而且还与输入信号有关, 而Moore型的输出只与当前状态有关, 与输入信号无关, 其输出与时钟同步, 应尽可能采用Moore型状态机, 以提高数字系统的稳定性。

在进行有限状态机的状态描述时, 可以将“状态寄存器” 、“次态逻辑”和“输出逻辑”各用一个进程来描述;也可以用一个进程来描述“次态逻辑”和“输出逻辑”, “次态逻辑”只包含状态转换逻辑, “输出逻辑”用来实现数据传输和算术逻辑控制, “状态寄存器”仅实现状态机的逻辑控制部分, 将其与它要控制的电路在设计代码中严格分开, 代码的可读性明显加强, 同时逻辑综合工具会容易进行优化。一个完备的状态机应该具备初始化状态, 当芯片加电或者复位时, 状态机能够自动将所有的判断条件复位, 并进入初始化状态。还应有一个默认状态, 当转移条件不满足或者说状态发生了突变时, 应能确保不进入“死循环”, 也就是要有“自恢复功能”, 一般通过“when…others”或“if…then…else”来建立。

1.5层次化电路设计

在复杂的电路系统设计中, 通常系统设计无法在一个设计实体里实现, 这时就可以将此系统按功能模块划分, 先分别设计各底层的功能模块, 并对每个功能模块进行优化设计, 再将各模块连接起来, 划分功能模块时尽量使各个模块之间的I/O连接最少。完成一个层次化设计之后, 设计者可以在开发工具中通过选项设置, 允许跨越功能模块的边界对设计进行优化, 从而使电路结构更加合理。如果设计者对设计中不同模块有不同的优化条件和要求 (有的要求面积最小, 有的要求速度最快) , 也可以在逻辑综合过程中保持设计原来的层次结构, 并按照设计的要求设置约束条件。

2结语

在FPGA芯片设计过程中, 我们只有积累了丰富的设计经验, 并在掌握上述优化设计思想和方法的基础上, 才能设计出内部资源消耗少、运行速度快、性能优良稳定运行的数字系统。

摘要:硬件描述语言HDL是基于行为级描述的语言, 用HDL设计开发的FPGA芯片, 由于FPGA器件自身的结构特点, 使得FPGA器件在生成的电路结构、电路性能、内部资源的消耗及器件的运行速度等方面存在一定的缺陷。分析探讨了优化FPGA芯片设计, 改进用VHDL语言描述电路结构的几种方法。

关键词:FPGA,HDL,优化设计

参考文献

[1]陈志刚.VHDL语言在电路设计中的优化[J].电子测试, 2008 (9) .

[2]李国丽, 朱维勇.EDA与数字系统设计[M].北京:机械工业出版社, 2010.

[3]潘松.EDA技术实用教程[M].北京:科学出版社, 2002.

可编程逻辑控制器件 篇5

1 研发方法

PCI接口控制器的设计相对来说比较复杂。目前比较常用的方案有两种:第一种是用可编程逻辑器件设计实现,目前,部分厂家能够提供这类专用芯片,如AMCC公司开发的主/从控制芯片S5900-33,PLX公司开发的PLX9080和PLX9054,还有PCI接口专用芯片PCI9080等。其中PCI9054具有较强的性能。

第二种方案是采用专用接口芯片。FPGA内部具有丰富的触发器和I/O引脚。FPGA是ASIC电路设计周期最短、开发费用最低、风险最小的器件之一。从这个角度出发,应用可编程逻辑器件FPGA来实现也是一个较好的选择。

总的来说,它们各有特点,前者方案需要投入大量的人力、物力进行逻辑验证和时序分析工作;而后者需要购买价格不菲的专用芯片。但是对PCI的接口设计以及可编程逻辑器件有着良好的开发经历来说,不妨采用第一种方案。FPGA起源于美国兀llnx公司的创造,该公司于1985年发明了世界上第一个FPGA器件。直到今天,FPGA已经经历了二十几年的发展历史。在这二十几年的发展过程中,以FPGA为代表的可编程逻辑器件技术取得了飞速的发展,从最初可以在一块芯片上集成1200个可用门,发展到90年代25万个可以门,到本世纪初,国际上现场可编程逻辑器件著名厂商Altera公司、Xihnx公司陆续推出数百万门至上千万门的单片FPGA,将现场可编程逻辑门阵列芯片的发展提高到一个新的水平。

2 PCI总线

2.1 特点

PCI局部总线是当今PC领域主流的局部总线标准,由于其独立于CPU的架构,而与CPU的时钟无关,因此用户可以将一些高速外设如网络适配卡、图形卡、硬盘控制器等从ISA总线上卸下,而通过PCI局部总线直接挂接在CPU上,使之与高速的CPU总线相匹配,从而打破了数据FO的瓶颈,使高性能的CPU得以发挥。

2.2 组成

PCI总线的中断共享由硬件与软件两部分组成。硬件上,采用电平触发的办法:中断信号在系统一侧用电阻接高,而要产生中断的板卡上利用三极管的集电极将信号拉低。而只有当所有板卡的中断都得到处理后,中断信号才会回复高电平。软件上,采用中断链的方法:假设系统启动时,发现板卡A用了中断7,就会将中断7对应的内存区指向A卡对应的中断服务程序入口ISR_A;然后系统发现板卡B也用中断7,这时就会将中断7对应的内存区指向ISR_B,同时将ISR_B的结束指向ISR_A。以此类推,就会形成一个中断链。而当有中断发生时,系统跳转到中断7对应的内存,也就是ISR_B。ISR_B就要检查是不是B卡的中断,如果是,要处理,并将板卡上的拉低电路放开;如果不是,则呼叫ISR_A。这样就完成了中断的共享。

3 基于FPGA的数据传输接口

与PCI总线目标设备控制器接口的应用设备在PCI总线传输中处于被动的地位,它不会申请对总线的使用权,只是在地址命中的情况下响应由总线主设备提出的总线操作。PCI总线目标设备控制器要生成PCI总线传输中目标设备应产生的总线信号,根据这一原则,将PCI总线目标控制器从功能上划分为7个模块,如图1所示。其中配置模块、基地址译码模块、奇偶校验模块、锁存模块、重试计数模块、有限状态机这6个模块负责实现配置空间读写、地址空间译码、奇偶校验位生成、地址期信号锁存、与目标设备重试连接、目标设备状态转移和接口信号控制等功能,而后端设备模块是为测试PCI总线目标设备控制器的功能而设计的。

3.1 地址数据的控制

由于PCI总线是地址数据复用总线,所以地址数据控制模块是用来对地址数据传输的控制,即按照PCI协议,满足一定的逻辑关系情况下总线上传输的是数据,满足另外的逻辑关系总线上传输的是地址。通过读取地址译码,地址译码产生的信号可实现对各寄存器(源地址、目的地址、计数器寄存器)的寻址,指示对应寄存器完成读写操作。当PCI处理数据时,地址译码单元先获得源地址和目的地址,进而进行数据相应的数据传输操作。

3.2 地址锁存及数据分离

当PCI总线处于空闲状态时,若PCI从设备的FRAME#信号被拉低,这时在CLK的上升沿分别采样地址/数据线、命令/字节使能线上的内容,得到的即为地址和总线命令(即在PCI总线地址期锁存)。这一过程就是地址和命令的锁存,因为PCI总线上地址、数据复用AD信号线,命令、字节使能复用C/BE#信号线,所以在总线地址期应锁存地址和命令。在锁存地址和命令的同时,该电路模块还要锁存初始化设备选择信号IDSEL。

当PCI从设备的FRAME#信号被拉低表示一个总线周期的开始,第一个时钟是地址周期,为了便于后面电路的处理必须将地址AD信号和命令C/BE#信号进行锁存。此锁存电路要把在上述时序中采集的数据传输到地址命令译码器,由译码器检查此次总线访问的对象是否是本设备。

3.3 开发

状态机(FSM)是设计PCI接口逻辑的核心与主干,时序状态机接收来自总线主设备和从设备的控制信号,加以分析处理,无论是否是对本设备的访问,都要引导其作出正确的时序响应,以保证总线交易的正确完成。根据数据传输的要求需要设定六个状态,即空闲状态(IDLE1)、设备选中状态1(DEV_ST1)、配置读状态1(CFG_RD_ST1)、配置读状态2(CFG_RD_ST2)、停止状态(STOP_ST1)、配置读状态3(CFG_RD_ST3),当状态机处于空闲状态时,在cfg_rd_sel或io_rd_sel或mem_rd_sel被选通时,控制器通过译码判断本目标设备是否被选中,若是选中,则转入DEV_ST1,同时如irdy主设备准备好了,则进入配置读状态1,当配置读传输进行了一个数据期后,如若irdy还处于有效状态,则进入CFG_RD_ST2,继续进行传输,否则在配置读状态2停留不动,接下来,如果frame在此时突然拉低,则预示着主设备要求停止当前的数据传输或则数据快传输完毕,进入停止状态STOP_ST1,然后完成最后一次的数据传输,进入配置读状态3(CFG_RD_ST3),当完成最后一次的数据传输后则回到了空闲状态。状态机中空闲状态转到这六个状态根据PCI总线的使用情况而进行转换,从而完成数据的传输。

4 结语

在PCI总线接口的设计中,PCI总线接口的性能将会影响整个系统性能,采用FPGA做为硬件载体,VHDL语言进行功能描述。采用FPGA实现PCI总线接口不但升级简单、容易,而且提高了系统集成度。

摘要:设计了PCI总线的可编程逻辑器件传输接口,接口芯片没采用通常固有芯片而采用FPGA,给出了主要的开发设计。该系统可以很好地应用于PCI的数据采集与测试环境。

关键词:FPGA,PCI,数据传输,接口

参考文献

[1]William Stallings著,张昆藏,等译.计算机组织与体系结构性能设计.第6版[M],北京:清华大学出版社,2000.

[2]王雪梅,施洪昌.基于PCI总线的数据采集卡的设计[J].微计算机信息(测控自动化),2005,(4).

可编程逻辑控制器件 篇6

1 MK60DN512与Spartan6系列FPGA

MK60DN512系列是飞思卡尔公司近期推出的一款基于Cortex—M4内核的ARM微控制器,率属于Kineits系列.Kineits微控制器系列融合了最新的低功耗革新技术,具有处理高精度的混合信号能力,且具备宽广的互连性及安全外设. 其CPU最高频率可达100MHZ,部分支持120MHZ或150MHZ,支持DSP扩展指令集,且具备浮点运算能力.此外该系列还集成了丰富的外设资源,除了自带本系统所需的FlexBus总线驱动器之外,还包括了USB OTG 、Ethernet MAC及SDHC等外设模块,以便于满足部分高端领域的扩展应用.多达32位的DMA通道可用于外设和存储数据的传输,内部集成快速、 高精度的16位ADC及12位DAC。

基于Kineits平台的FlexBus总线具有独立可编程的6位片选信号以满足外部从设备的片选要求,支持可配置为8位、 16位、32位的数据总线端口,满足不同从设备要求,具有可实现与同步设备或异步设备的无缝连接的地址总线锁存使能引脚.完全满足作为ARM与FPGA的通信总线。

Spartan-6 FPGA为Xilinx的低成本、 低功耗FPGA.Spartan6系列能够提供全新且更高效的双寄存器6输入查找表(LUT) 逻辑和一系列丰富的内置系统级模块,其中包括18Kb (2 x 9Kb) Block RAM、 第二代DSP48A1 Slice、SDRAM存储器控制器、增强型混合模式时钟管理模块、 SelectIO技术、功率优化的高速串行收发器模块、PCI Express兼容端点模块、高级系统级电源管理模式、自动检测配置选项,以及通过AES和Device DNA保护功能实现的增强型IP安全性.本设计采用的FPGA为该系列中的XC6SLX9,144脚TQG封装,可用IO口为96个。

2系统的硬件设计

Kineits系列ARM微控制器集成了FlexBus总线驱动器,所以FlexBus的应用中硬件电路得到了最大的简化,在保证系统可靠性的同时,也保证了FlexBus的通信速率.FlexBus支持8位、16位和32位的数据总线端口,可以满足不同设备的需求,本设计采用了8位数据线19位地址线的模式.同时FlexBus支持总线复用和非复用两种模式,本设计采用了非复用模式,以保证数据的传输速度。

图一为系统的硬件框图

3 FlexBus的软件设计

由于Kinetes内部集成了FlexBus总线驱动器,所以在软件设计部分我们只需要根据硬件电路设计和系统设计目的进行相关寄存器的配置及读写程序.对于FPGA来说,在本系统中它是作为从设备而存在的.从ARM的角度来看,可以把FPGA看做是一个存储器,根据ARM的读写指令不同而对相应地址发送或者接收数据。

3.1 FlexBus的初始化设置

FlexBus的初始化设置主要是根据设计要求配置对内部集成的FlexBus驱动器进行相关的寄存器配置.FlexBus总线共有6个片选信号,即最多可以外接6个外部存储器.在本设计中,由于外部连接的为灵活的可编程逻辑器件FPGA,所以本设计应用了两个片选信号CS2和CS4 (根据硬件电路选定),即从ARM角度看, 外部连接了两片存储器.需要注意的是, 在选用除CS0以外的片选信号时,需要预先设定FlexBus的芯片选择屏蔽寄存器CSMR0为片选可用,否则除CS0的其他片选信号默认为不可用.相关寄存器设置如下:

其具体的流程图如下 :

初始化完毕后再根据需要编写简单的读写代码即可以完成ARM端的软件系统.现给出读写程序如下 :

3.2 Verilog实现的硬件设计

FPGA在本设计中作为存储从设备, 根据ARM中FlexBus模块的时序,运用Verilog硬件描述语言进行编程.其中,fb_ ad[34 :24] 为双向数据线,采用三态门以实现读写转换.下面给出Verilog的主要程序.

读操作程序:

3.3仿真波形

K60采用IAR作为开发环境,FPGA使用ISE进行编译,使用ISE工具中的Chipscope进行在线测试,将代码下载到硬件后得到的时序图如下:

在IAR中得到的ARM读取的在线变量值如下图:

4结语

可编程逻辑控制器件 篇7

在可编程逻辑器件的发展过程中, 不同厂家对新型PLD器件的叫法不尽相同, 对CPLD和FPGA的分类标准也有差异, 人们通常把基于乘积项技术和EEPROM工艺或Flash Memory工艺的器件称为CPLD, 把基于查找表技术和SRAM工艺的器件称为FPGA (也有些资料将这两种器件都称为CPLD或都称为FPGA) 。这样给使用和选择带来了不便甚至困惑, 本文按一般的分类方法, 分别介绍这两种可编程逻辑器件各自的特点, 以期给使用者以帮助。

1 复杂可编程逻辑器件CPLD

CPLD是从SPLD发展而来的高密度PLD产品, 目前CPLD的产品种类繁多, 各具特色, 但其构成基本相同。如图1所示为CPLD的结构示意图, 它由若干个逻辑阵列块 (LAB) 、可编程互连阵列 (PIA) 和可编程的输入/输出模块 (IOB) 组成。

CPLD大都采用分区阵列结构, 即将整个器件分成若干个逻辑阵列块 (Logic Array Block, LAB) , 每一个LAB实际上就是许多PAL/GAL阵列组成的SPLD组合, 这些PAL/GAL阵列常被称为宏单元 (macro cell) 。在通常情况下, 每个宏单元包括可编程的与门阵列、乘积项选择矩阵、或门阵列以及一个可编程的寄存器。根据器件类型的不同, CPLD中可以包含2~64个相同的LAB, 可以容纳上万个等效的宏单元。

这些LAB经过内部的可编程互连阵列 (Programmable Interconnect Array, PIA) 进行互连, 从而实现比较复杂的逻辑功能。

可编程的输入/输出模块 (Input/Output Block, IOB) 允许每个I/O引脚单独配置成输入、输出或双向工作方式。所有I/O引脚都有一个三态缓冲器, 它可以由某个全局输出使能信号控制, 也可以把使能端直接连接到地或电源上。

CPLD一般采用CMOS工艺和EEPROM或Flash Memory等先进技术、具有密度高、速度快和功耗低等性能。采用CPLD设计数字系统, 可以使系统性能更优越。

2 现场可编程门阵列FPGA

现场可编程门阵列 (FPGA) 是另一种重要的可编程逻辑器件。FPGA在原理上与CPLD不同, FPGA的内部不使用PAL/GAL类型的逻辑, 许多FPGA都使用查找表 (Look-Up Table, LUT) 这种存储器型的逻辑块, 并包括小规模的门阵列和触发器电路, 代替了CPLD中的与或逻辑结构, 同时, 因为FPGA含有更多的逻辑块, 含有更多的互连单元, 它使用与CPLD不同的可编程互连工艺, 从而提供更灵活的布线功能, 因而FPGA显得更为灵活。

查找表本质上就是一个RAM。目前FPGA中多使用四输入的LUT, 所以每一个LUT可以看成一个有4位地址线的16×1的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后, FPGA开发软件会自动计算逻辑电路的所有可能的结果, 并把结果事先写入RAM。这样, 每输入一个信号进行逻辑运算就等于输入一个地址进行查表, 找出地址对应的内容, 然后输出即可。

FPGA主要由可配置逻辑块 (Configurable Logic Block, CLB) 、输入/输出模块 (Input/Output Block, IOB) 和可编程互连线 (Programmable Interconnect, PI) 组成。

可配置逻辑块 (CLB) 是FPGA的基本结构单元, 能够实现逻辑函数。CLB一般由函数发生器、数据选择器、触发器和信号变换电路等部分组成。例如, 在Xilinx公司的Spartan-Ⅱ型号的FPGA中, 一个CLB包括两个SLICE (SLICE是组成CLB的基本单元) , 每个SLICE包括两个LUT、两个触发器和相关逻辑。SLICE可以看成是Spartan-Ⅱ实现逻辑的最基本的结构。在通常情况下, FPGA中的逻辑单元通过查找表的功能来实现组合逻辑函数, 查找表实际上取代了CPLD中与门/或门阵列。

输入/输出模块 (IOB) 分布于器件四周, 提供内部逻辑与外围引脚间的连接。

可编程互连线 (PI) 由许多金属线构成, 以提供高速可靠的内部连接, 将CLB之间、CLB和IOB之间连接起来构成复杂逻辑。

实际的FPGA中有很多个查找表用来配置可编程互连线的连接以及控制I/O引脚的连接。

3 CPLD和FPGA的比较

CPLD和FPGA的产品种类较多, 均能实现各种逻辑功能, 用于开发各类数字系统, 但它们又有各自的特点:

1) CPLD更适合完成各种算法和组合逻辑, FPGA更适合于完成时序逻辑。

2) 在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程, FPGA主要通过改变内部连线的布线来编程;FPGA可在逻辑门上编程, 而CPLD是在逻辑块上编程。

3) FPGA的集成度比CPLD高, 具有更复杂的布线结构, 能实现更复杂的逻辑功能。

4) CPLD比FPGA使用起来更方便。CPLD的编程采用EEPROM或FLASH技术, 无需外部存储器芯片, 使用简单。而FPGA的编程信息需存放在外部存储器上, 使用方法复杂。

5) CPLD的速度比FPGA快, 并且其传输时间具有较大的可预测性。这是由于FPGA是门级编程, 并且基本逻辑单元之间采用分布式互联;而CPLD是逻辑块级编程, 其内连电路是固定的。

6) 在编程方式上, CPLD主要是基于EEPROM或FLASH存储器编程, 编程次数可达上万次, 优点是系统断电时编程信息也不丢失。FPGA大部分是基于SRAM编程, 编程信息在系统断电时丢失, 每次上电时, 需从器件外部将编程数据重新写入SRAM中。其优点是可以编程任意次, 并可在工作中快速编程。

7) CPLD保密性好, FPGA保密性差。

因为CPLD和FPGA具有各自的特点, 用CPLD和FPGA设计数字系统时需要不同的逻辑设计技巧。FPGA是细粒器件, 其基本单元和路由结构都比CPLD的小, FPGA是“寄存器丰富”型器件 (即其寄存器与逻辑门的比例高) , 而CPLD正好相反, 它是“逻辑丰富”型的, 很多设计人员偏爱CPLD是因为它简单易用和高速的优点。CPLD更适合逻辑密集型应用, 而FPGA则更适用于寄存器密集型设计。

可编程逻辑控制器件 篇8

武器的引信、内外弹道、抗冲击性等相关测试是在被测装置内内置微型存储测试仪, 对被测装置无影响或影响在允许误差范围内, 现场采集信息并存储, 然后回收装置, 再由计算机处理和复现所测信息[1]。虽然经过处理后的各种测试装置均能满足抗高过载的要求[2~4], 但随着存储测试技术在高g值加速度测试中的迅速发展, 也暴露出一些缺点和不足, 比如应用不够灵活、容易误触发等。采用单片机就很容易跑飞[5], 很难对被测信号进行高速采样与存储;而专用集成芯片ASIC的功能固定, 需要扩展电路模块, 进而会造成硬件体积增大, 增大整个系统的尺寸[2]。为此, 本文提出了基于CPLD的可编程微型加速度存储测试仪[6,7]。

1 总体方案设计

信号的采集与存储电路是整个测试系统的核心。系统通过复杂可编程逻辑器件CPLD主控芯片来进行加速度测试, 其内部有集成的RAM, 可以实现数据的缓存, 避免用外部FIFO, 实现了系统的低功耗, 存储芯片具有电流小、功耗低等特点。加速度测试数据存储于存储器内部, 待试验后通过回收测试系统读取所测数据, 其总体设计框图如图1所示。微型加速度测试仪的尺寸可以达到80×16 mm, 结构如图2所示。电源管理部分采用休眠方式防止误上电, 实现了系统的微功耗;信号采集是系统的重中之重, 可采用CPLD实现高速采样;A/D关系到系统的精度, AD7484可以满足要求。

2 关键技术

测试系统的关键技术决定了系统的性能及精度, 主要从以下几个方面来考虑。

2.1 主控芯片

采用单片机作为主控芯片, 若有较强的电磁干扰或环境比较恶劣, 可以在设计时针对特定环境增加一些保护措施, 如外壳屏蔽、电磁隔离等, 但仍然很难彻底解决运行程序时可能出现的跑飞现象。而且由于受到外设的限制, 几个———十几个脉冲输出口往往需要多片单片机才能实现。限制其最大采样频率的关键在于写入到FLASH中的速度, 但是单片机是执行代码的器件, 代码只能逐句运行, 从而导致了在需要进行数据转换、传输和写入的采样过程中, 写入占据了大部分的采样时间。目前的加速度存储测试仪主要为单次单变采样, 功能固定、难以扩展, 不能适应多条件的测试要求。

本文所讨论的测试背景要求测试装置在不同阶段、不同条件下具有不同的采样频率。CPLD为复杂可编程逻辑器件, 具有速度快、集成度高、可自定义功能及可重复编程和反复擦写等优点。同时相对于顺序执行的单片机来说, CPLD管脚间的延迟时间为ns级, 内部程序并行执行, 在处理速度上具有绝对的优势, 可处理高达几十兆赫兹的采样信号。CPLD芯片具有明显的优势。微型加速度存储测试仪主控芯片采用可抗高过载的芯片XCR3064XL。

2.2 电源优化

电源管理模块负责给系统的各个部分提供工作电压并管理某些芯片的工作状态。要实现系统低功耗工作, 有效控制各个模块的供电状态非常重要, 图3为测试仪的电源管理逻辑状态转换图。测试仪的供电电源采用抗冲击的固态聚合物锂离子电池, 容量为250 m Ah。接通电源后, 系统便处于低功耗的休眠状态;手动上电后, 系统开始进行采样, 并将结果按地址循环存放于存储器中, 这时系统进入待触发状态;当系统收到内触发或外部霍尔开关的触发信号后, 开始进行采样存储, 进入存储状态;系统根据所选存储器容量将数据存满后停止采样, 进入存储保持状态。此时可以通过USB数据线与计算机连接, 实现数据的波形显示与硬盘存储。下电后, SRAM存储器清零, 系统重新进入休眠状态。电源管理由ASIC的两个专用电源控制管脚ONA非和ONB非控制, 可实现低功耗, 休眠状态电流为0.2μA, 待触发态电流为6 m A, 触发后电流变为12 m A, 采样完毕后电流仅为0.4 m A。

2.3 防误上电

CPLD庞大的逻辑阵列很容易实现计数器和触发器。系统通过编程设定上电延迟时间, 上电触发计数器根据外部提供的时钟信号开始进行计时, 若上电持续时间已经达到设定时间, 则系统上电;否则系统仍然处于休眠状态。

2.4 采样芯片和采样频率选择

考虑到测试系统精度要求, 同时也为了降低整体功耗, 系统选用AD公司生产的低功耗、高速并行口、逐次逼近 (SAR) 的14位A/D转换器AD7484。AD7484的最高采样频率为3 MHz, 采用AD7484提高了系统分辨率, 使得数据更加精确, AD7484转换时序如图4所示。图4中AD7484数据转换时间tCONV最大为300 ns;转换信号CONVST低脉冲宽度必须介于5 ns和100 ns之间;开始转换的忙信号BUSY下降沿与转换信号CONVST下降沿的时间差t2最大为20 ns;从数据转换完成、BUSY变高, 到将数据放置到AD7484的地址总线上的数据存取时间最大为25 ns。根据以上AD7484的数据转换时间要求, 在利用CPLD对其进行时序和逻辑控制的时候要根据时序进行控制。由于在CONVST的时钟的下降沿开始转换, 因此AD的转换频率是由CONVST决定的。而CPLD内部的程序都是并行运行的, 运行时间为纳秒级, 因此可以轻松实现高速率采样。只要通过CPLD编程设定内部计数器和触发器的触发条件即可将提供的时钟信号进行分频得到相应频率的CONVST信号。由于测试时间为十几秒, 故测试仪根据精度的不同信号采样频率有三种:50 k Hz、100 k Hz和200 k Hz。

2.5 负延迟容量选择

不同的场合需要的负延迟容量不同。存储数据的地址信号由CPLD产生, 因此若要实现不同的负延迟容量只要改变内部程序中的触发后产生的地址信号个数即可。测试仪上电后开始采样, 存储器将采样数据循环存入存储器中, 地址信号依次加1;触发信号到来时, 电路触发, 系统进入负延迟工作状态, 即计数器计数达到设定个数后停止采样, 最后一位地址信号存入地址计数器, 等待数据读出;计算机读取数据时, 地址信号依次加1, 计算机读完规定长度的数据后, 地址计数器又回到凝固态。根据有效数据的前后位置, 信号的负延迟采样策略分为有效数据在后的起点模式和有效数据在前的终点模式两种。为了提高系统在高温、高压、高过载等恶劣环境下的可靠性, 本系统选择采用Nano Amp, Inc公司的SRAM存储器, 存储总容量为512 k×12 bit, 具有电流小、功耗低等特点。

3 实验验证

用环氧树脂对装置进行真空灌封处理, 并设计了专门的抗冲击机械壳体, 将电路固结在保护壳中以提高抗过载性能。在试验前对系统做了标定工作和特性测试工作, 最终在多次武器内载试验中取得了较好的效果, 而且试验中测试系统误上电的现象几近消失, 而高的采样率和负延迟作用保证了信号的有效性和可靠性。图5为某武器抗冲击性测试的典型三轴加速度曲线。

4 结论

本文提出了基于复杂可编程器件的微型加速度存储测试仪。该系统具有很多优点, 采用CPLD作为主控电路芯片, 使整个系统高效、稳定、可靠;CPLD内部丰富的逻辑单元使得系统可以通过休眠防止误上电;通过并行实现高速率采样, 通过分频实现多种频率可选;通过计数实现多种负延迟可选。此外, 测试仪还具有抗高过载, 低功耗, 尺寸小, 成本低等优点。因此, 在该应用领域中具有很好的发展前景和推广价值。

参考文献

[1]祖静, 申湘南, 张文栋.存储测试技术[J].测试技术学报, 1994 (2) :28-34.

[2]郭红英, 祖静.存储测试专用集成电路测试研究[D].太原:中北大学, 2007.

[3]徐鹏, 祖静, 林祖森.高g值冲击加速度实测技术研究[J].兵工学报, 2002, (增) :54-57.

[4]徐鹏, 范锦彪, 祖静.高g值冲击下存储测试电路模块缓冲保护研究[J].实验力学, 2005, 20 (4) :601-614.

[5]李海燕.单片机测控系统的抗干扰技术[J].船电技术, 2005 (6) :30-33.

[6]李红旗, 李东光, 李世义.基于CPLD的弹载高速存储测试系统关键技术研究[J].弹箭与制导学报, 2007 (1) :360-362.

上一篇:林业上市公司下一篇:四大发明、文学和艺术