可编程器件

2024-07-08

可编程器件(精选九篇)

可编程器件 篇1

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.

可编程器件 篇2

摘要:介绍lattice半导体公司推出的可编程模拟器件ispPAC10内部结构及设计应用。该控制芯片可方便的完成对信号的放大,衰减及滤波的功能。

关键词:可编程模拟器件 ispPAC10

一.引言

在20世纪末,Lattice公司推出了在系统可编程模拟器件(ispPAC――In-System Programmability Programmable Analog Circuits),将在系统可编程技术引入模拟电路的应用领域。与可完成逻辑功能的数字在系统可编程大规模集成电路(ispLSI)一样,ispPAC它允许设计者使用EDA软件在计算机上设计修改模拟电路,并进行仿真,最后还可以通过编程电缆将设计方案下载到芯片中去.sipPAC主要可以完成3个功能:1.信号调理。2.信号处理。3信号转换。本文介绍的ispPAC10其功能是信号调理即能对信号进行放大,衰减,滤波。

二.结构与原理

ispPAC10器件的结构由四个基本单元电路,模拟布线池,配置存储器,参考电压,自动校正单元和ISP接口所组成如图1.0。器件用5V单电源供电。

其基本单元电路(PACblock)由一个差分输出的求和放大器(OA)和两个具有差分输入的、增益为±1至±10以整数步长可调的仪用放大器组成。输出求和放大器的反馈回路由一个电阻和一个电容并联组成。其中,电阻回路有一个可编程的开关控制其开断;电容回路中提供了120多个可编程电容值以便根据需要构成不同参数的有源滤波器电路。如图1.2所示

三.主要功能指标

*4个仪表放大器增益/衰减能分级进行

*可编程的增益范围(0~80dB)

*多达4个输入的信号求和

*精确有源滤波(10~100KHz)

*器件可重复檫写10000次

四.参考设计

(一). 增益设置

1.普通增益设置

通常情况下,PACblock中单个输入仪用放大器的增益可在±1至±10的范围内按整数步长进行调整。IA1和IA2是求和的关系,如果所求的.增益在±10之间,那就只需用其中一个。如图1.3所示,将IA1的增益设置为4,则可得到输出VOUT1相对于输入VIN1为4的增益;

如果要得到增益大于±20的放大电路,可以将多个PACblock级联。图1.4所示的是增益为40的连接方法。

2.分数增益的设置

可编程器件 篇3

关键词:PCI总线;数据传输;FPGA

中图分类号:TP399文献标识码:A文章编号:16723198(2007)11026301

1引言

近年来PCI总线已经在高档测试仪器中得到越来越广泛的应用。由于PCI总线协议非常复杂,不便于与测量控制逻辑直接连接,需要经过一个PCI接口控制器作为桥梁。另外考虑到软件的处理速度和工作效率,测量电路高速采集的数据也不能立即传送给主机,因此在FPGA内部设计了FIFO缓冲器。设计方案如图1所示。当送入FIFO的测量数据达到预定的数量时,本地中断逻辑通过PCI总线接口控制器向主机提出中断请求,主机响应中断后,通过PCI总线控制器从FIFO中取走测量数据。

PCI接口控制器的设计相对来说比较复杂。目前比较常用的方案有两种:第一种是用可编程逻辑器件设计实现,第二种方案是采用专用接口芯片。由于前者方案需要投入大量的人力、物力进行逻辑验证和时序分析工作,延长了开发周期,因此本文选择了专用接口芯片方案。具体型号是PLX公司的PCI9054芯片。使用这种专用芯片桥接PCI总线和本地总线,开发者可以省去考虑很多复杂的PCI总线规范,而集中精力开发硬件和驱动程序。

以下主要论述图1虚线框内的FPGA设计与实现。重点是与PCI9054接口的本地总线控制逻辑和中断逻辑。

2数据采集接口逻辑的设计

2.1PCI9054本地总线研究

对本地总线操作过程及控制信号时序关系的分析是应用PCI9054芯片和设计本地总线控制器的基础性工作。PCI9054本地总线的信号包括:LHOLD(输出)申请占用本地总线信号;LHOLDA(输入)本地总线应答信号;ADS#(输出)地址选通信号;BLAST#(输出)传输结束指示信号;LW/R(输出)读写状态信号(高电平表示写,低电平表示读);READY#(输入)外部等待信号;LCLK(输出)本地时钟;LRESET#(输出)本地复位信号;LA[31:2](输出)本地地址总线;LD[31:0](输入/输出)本地数据总线。上述信号名后带有“#”的表示低电平有效,另外输入输出是针对PCI9054芯片而言的。 

当读数据时,本地总线上的各信号时序关系如图2所示,控制信号有效边沿的含义已标注于图中。图2所示的PCI从方式读操作中,每次传输的数据有多个字,ADS#信号变低表示数据传输周期的开始,之后每个时钟周期的上升沿将本地数据总线上的数据读入9054内部,在紧接着的时钟下降沿自动增加本地地址总线上的地址;数据传输状态将一直持续到BLAST#信号变低,表示当前数据期已经是传输的最后一个数据期,数据传输即将结束。这种传输方式称为突发传输。相对应的PCI9054也支持单周期传输。在单周期传输时,每次只传输一个字,BLAST#信号在ADS#信号有效后的下一个时钟周期就会出现。显然单周期方式的数据传输率较之突发传输方式会慢很多,由于FPGA内的FIFO数据传输率能够与PCI9054的数据传输率相适应,本文采用突发传输方式以提高PCI总线的传输效率。

2.2本地总线控制

根据前文可以明确出本地总线控制器的设计目标:根据输入的控制信号LHOLD、ADS#、BLAST#生成符合本地总线时序要求的控制信号LHOLDA、READY#和FIFO的读请求信号RDREQ。 对于LHOLD信号的应答问题,采用Verilog语言中的always和assign语句就能简便高效的实现。对READY#信号的处理可以采用同步状态机,其状态图如图3所示:

2.3对于本地中断的分析和应用

当采集并存储在FIFO中的数据达到一定数量,为了避免FIFO溢出主机需要将测试数据从FIFO中取走。从提高效率的角度出发,采用中断方式完成该工作。

在PCI9054 的中断被使能的情况下,如果本地逻辑向PCI9054芯片输出本地中断信号,PCI9054芯片将生成PCI中断信号。需要特别注意的是:PCI9054芯片生成的PCI中断信号是电平信号,而非脉冲信号,因此当该PCI中断被PCI主机响应后需要在中断服务程序的入口处手动禁止PCI中断,否则会导致多次触发中断的异常情况出现。同时由于在中断服务程序出口处重新打开了PCI中断,因此须在中断服务程序执行期间撤销本地中断源以避免中断服务程序一旦结束就将再次触发中断的异常情况出现。

基于以上分析,本地中断处理逻辑需要实现两点功能要求:① 当触发条件满足时,生成本地中断输入信号LINT#。② 在中断服务程序执行期间,撤销本地中断输入信号LINT#。对于第一点要求,采用的方法是用减计数器的溢出信号来作为本地中断输入信号,该计数器的初值可以由应用程序根据被测器件和测量模式来灵活设置。对于第二个功能要求,在开发实践中采用了一种效率更高、移植性更好的本地中断信号撤销机制。其关键点在于将撤销本地中断信号的控制权由本地逻辑转移到中断服务程序中。具体方法是:在本地端设计一个中断处理触发器。该中断处理触发器的clear端口连接的是数据总线的最低位与译码器输出信号相与后的信号,D端口置1,clk端口连接上述减计数器的溢出信号,q端口上输出信号经过非门作为LINT#信号输出。当FIFO中的数据量达到预先设定值时,减计数器溢出,触发器q端输出高电平,经过反相器即产生低有效的本地中断输入信号。当主机响应中断,并进入中断服务程序后,执行一次对该触发器置1的操作,这样连接clear端口的与门的两个输入端都为高电平,进而将该触发器的q端输出置0,经过反相后,LINT#信号变为高电平,即撤销本地中断信号。

3结论

本文讨论分析PCI9054接口控制器的本地总线操作过程,并在此基础上研究与设计了数据采集接口逻辑。该数据采集接口逻辑是PCI9054芯片与数据FIFO进行信息交互的桥梁。该设计已用Verilog硬件描述语言进行了功能描述,并仿真验证和综合。设计方案已经应用在某晶体管特征曲线图示仪产品开发实践中,实践运行证明该数据采集接口电路能够高效、稳定的工作。

参考文献

[1] PLX technology PCI 9054 Data Book Version 2.12000,(1).

在系统可编程ISP器件的应用举例 篇4

彩灯控制系统的工作原理

上图为控制系统方框图。控制系统工作原理如下:用555定时器外接电阻、电容产生128Hz的脉冲信号, 此信号经分频器分别产生64Hz、32Hz、16Hz、8Hz、4Hz、2Hz、1Hz、0.5Hz的8种频率的信号。自动方式时, 这8种频率的信号通过8选1数据选择器 (MUX) 选择其中之一种信号;手动方式时, 这8种频率的信号通过手动拨码开关选择其中之一种信号, 被选出的信号送至12位2进制加法计数器, 产生12位2进制信号, 范围为000000000000-111111111111, 此信号送至控制方案电路产生64种控制方案64路TTL电平输出, 64路输出分别通过晶体管-可控硅电路放大驱动220V的彩灯或霓虹灯。64种控制方案循环下来后, 立刻发出一控制脉冲, 此脉冲一方面送8进制加法计数器产生3位2进制信号作为MUX的地址信号, 产生自动改变扫描速度的效果;另一方面, 经处理, 送语音控制电路发出语音信号。

各模块电路或程序设计的简单说明

分频器的设计:分频器由3个D触发器组成;8选1数据选择器 (MUX) 的设计;8位2进制加法计数器的设计:8位2进制加法计数器由J-K触发器组成, 仿照4位2进制加法计数器的设计;4进制加法计数器的设计;控制方案电路的设计:列举一种灯具图案实现的程序如下:

总体设计方案

根据性能指标要求确定总体方案:系统的主体数字部分设计在ISP器件内部, 采用自顶而下 (TOP-DOWN) 程序设计思想设计, 其中又包括顶层设计和底层设计。顶层设计是用原理图设计。底层设计可以用程序设计也可以用原理图来设计。系统分成三个模块, 分别是八进制加法计数器, 十二位二进制加法计数器和八选一数据选择器。每个模块输入编译好后, 绘好原理顶图, 选择器件及模式, 锁定好管脚, 保存并设为当前文件, 就可以编译, 下载到ISP器件中了。下载过后接上外围电路和仪器, 如:稳压电路、脉冲电路、滤波电路、D/A转换电路和电平发生电路。

控制方案电路用VHDL语言描述, 内设8个输入端, 低位4个输入端用于具体方案扫描, 高位4个输入端用于产生64种显示方案, 同时, 设64个输出端经晶体管-可控硅放大驱动大彩灯, 1个控制脉冲输出端用于每次大循环结束时自动改变扫描速度。在每次大循环结束时, 发出串行控制信号, 经在ISP器件内部用原理图设计的串行-并行转换, 再经处理后触发语音集成电路, 使之发出相应的音乐。8选1数据选择器 (MUX) 用ABEL-HDL语言设计而成。

在每次大循环结束时, 发出串行控制信号, 经在ISP器件内部用原理图设计的串行-并行转换, 再经处理后触发语音集成电路, 使之发出相应的音乐。

在顶图原理设计中, 输入输出必须加缓冲器, 锁定在EPF10K10PLCC-84器件管脚上。本研究的技术路线是:数字系统部分设计→输入计算机产生SOF文件→下载到ISP器件里→设计外围电路→绘制总原理图和接线图→绘制制造好印刷电路板→准备好器件、工具→安装, 焊接、调试→测试, 验证。

顶层原理图设计完毕后, 对八进制加法计数器、十二位二进制加法计数器和八选一数据选择器编写程序, 然后进行项目编译, 接着进行项目校验, 最后运行模拟器, 进行时序模拟。

参考文献

[1]黄正瑾《.在系统编程技术及其应用》.东南大学出版社.

[2]刘笃仁, 杨万诲《.在系统编程技术及其器件原理与应用》.西安电子科技大学出版社.

[3]唐亚平, 刘涛《.电子设计自动化 (EDA) 技术》化学工业出版社.

可编程器件 篇5

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.

可编程器件 篇6

为提高对通信检测设备的灵活性和升级性, 本文借鉴虚拟仪器结构, 设计某型基层级检测系统, 用于对通信设备进行快速检测[1]。使用通用计算机和多功能检测接口构建硬件平台, 检测接口用于接收计算机生成的数字激励信号和将采集到的通信设备响应信号转换为数字信号传送到计算机。由于通信设备接口信号的多样性, 检测接口应当具有重构能力, 能够在不改变硬件结构的前提下通过软件重新配置, 适应对多种信号的检测需求。

1 系统整体设计

检测接口电路从功能上可以划分为激励生成通道和数据采集通道, 分别使用DAC和ADC及相应的辅助电路完成数字信号与模拟信号的相互转换。FPGA是检测接口电路的信息传输与控制单元, 向上提供与上位机通信的数据和控制接口, 向下提供与ADC和DAC的数字信号通信接口, 能够完成对采集信号的预处理, 并用于整个接口电路的控制。

检测接口结构框图如图1所示。其激励通道由FPGA、DAC、滤波放大电路组成, 用于将上位机发送的数字激励信号转换成与通信设备信号物理特性一致的模拟信号。数据采集通道由信号调理电路、ADC和FPGA组成, 用于将采集得到的设备响应信号转化为数字信号传送到上位机进行分析处理。混合电路和变压器主要用于实现二线平衡双工传输功能, 并提供对外二线接口。

2 硬件电路设计

从结构上, 检测接口可以分为DAC单元、滤波放大单元、二线接口单元、混合单元、信号调理单元、ADC单元和FPGA系统单元。

2.1 DAC与滤波放大单元

DAC与滤波放大单元用于将数字信号转换为模拟信号, 并完成对信号的调理、幅度调节与功率放大功能。其硬件电路如图2所示。

该单元由3部分电路组成, 分别是DAC芯片电路、无源滤波电路和差分放大电路。

DAC芯片为ADI公司生产的高性能、低功耗CMOS数模转换芯片AD9762, AD9762为12位分辨率, 支持最高125 MS/s的更新速率。该芯片使用5 V、3.3 V可选单电源供电, 最高功耗175 m W, 2 m A~20 m A差分电流输出, 负载RLOAD为100Ω时输出电压范围为0.2 V~2 V[2]。FS ADJ引脚连接外接电阻RSET, 用于满量程电流输出调节。REFIO引脚用于基准电压VRFE输入/输出, 选择内部1.2 V基准电源时通过一个0.1μF电容与模拟地连接。其差分输出电压VDOUT与输入的12位数字代码 (DCODE) 的关系式为:

无源滤波电路由电感与电容组成截止频率为20 MHz的7阶巴特沃斯低通滤波器, 用于信号整形和消除毛刺干扰。

差分放大电路以全差分放大器AD8476为核心组成, 用于将通过无源滤波电路的模拟差分信号进行增益调节和功率放大。AD8476是一款功耗极低的全差分精密放大器, 其带宽为6 MHz, 使用±5 V电源供电时的输出电压范围为-4.845 V~4.82 V[3]。检测激励信号的峰峰值为4.3 V和6.2 V, 而DAC的输出峰峰值电压为2 V, 因而差分放大电路的增益应当大于3.1, 这样才能使得激励生成通道的输出信号幅值符合检测需求。考虑到DAC的转换效率和可能存在的误差, 可设计差分放大电路具有两个略大于满幅度输出的增益值。

图2中使用外部扩展电阻R1~R6组成反馈电阻网络, 其中R1=R2=10 kΩ为输入电阻, R3=R6=24 kΩ、R4=R5=33 kΩ为两组反馈电阻。该电路的增益值分别为A1=R3/R1=2.4, A2=R4/R1=3.3。为了提高检测接口的自动化程度, 使用1个2路2:1电子开关ADG736用于两组反馈电阻的切换, 通过改变其控制端IN1和IN2的电平逻辑, 完成开关动作。ADG736使用5 V供电时, 导通电阻RON为2.5Ω, 带宽大于200 MHz, 通过峰值电压为5 V。

2.2 二线接口与混合电路单元

二线接口与混合电路单元用于为信号激励与数据采集提供对外二线接口和实现收发信号的双工传输。其硬件电路如图3所示。

二线接口电路由电压比为1的变压器以及电阻RS1、RS2和电容C9、C10组成, 用于提供检测电路对外的二线接口, 实现接收与发送信号的传输, 同时可以隔离外部直流信号。RS1、RS2用于与线路负载阻抗匹配并隔离远端反射和提供线路的能量交换, 电容C9、C10用于配合组成激励发送端扩展滤波电路。

混合单元的功能是一阶模拟回波抵消, 用于抵消本地发送信号。图2中R7~R10为输入电阻, 同时与C3~C8组成一阶低通滤波器。两个仪表放大器AD8429用于将二线平衡信号转换为单端信号。AD8429为低噪声、高精度仪表放大器, 其增益为1时增益精度为0.02%、CMRR为80 d B、带宽为15 MHz, 使用±12 V电源供电时其输出电压范围为-10.1 V~10.7 V, 使用单个增益控制电阻RG能够控制其增益范围为1~1 000, 其增益控制关系为G=1+6 kΩ/RG[4]。

LT6600-10将一个全差分放大器与一个近似切比雪夫 (Chebyshev) 频率响应的四阶10 MHz低通滤波器集成在一起。芯片为低噪声全差分输入/输出放大器, 内部集成两个运算放大器、电阻电容网络, 组成1倍增益放大电路和一个10 MHz低通滤波器, 使用±5 V电源供电时其输出电压范围可达到±5 V[5]。

在图3中, U1为激励单元输出差分信号, U3为设备响应信号, RL为线路负载, 假设通过变压器初级线圈与次级线圈的电流分别为i1和i2, 则有:

式中, RS=RS1+RS2。同时有:

则由式 (2) 和式 (3) 可得:

在电路中, 第一个AD8429电路和LT600-10电路的增益值均为1, 则通过调节第二个AD8429的增益值, 使其增益值G3= (RS+RL) /RL时, 混合单元的输出差分信号U3′=U3×RS/RL。这样就达到消除近端发送信号的目的。

若线路电阻RS与负载电阻RL完全匹配, 则第二个AD8429的增益值为2时, 混合电路的输出U3′=U3。考虑到阻抗失配现象的普遍存在, 因此选择电位器作为第二个AD8429的增益控制电阻, 在线路阻抗失配的条件下, 通过调节增益控制电阻来实现混合单元消除近端信号的目的。根据前文所述, 可以得到混合电路输出信号U3′与二线输入信号U3比值跟增益控制电阻RG之间的关系式:

因此只要知道RG的值, 就能够通过式 (5) 准确地对通过混合单元造成的输入信号幅值的线性误差进行修正。为了提高检测接口的自动化程度和实现对RG值的实时感知, 选择数字电位计AD5272作为第二个AD8429的增益控制电阻。AD5272为1 024位分辨率、1%电阻容差误差、I2C接口和50-TP存储器数字变阻器, 最大阻值为20 kΩ, 可使用5 V电源供电[6], 其阻值调节步长为1.95Ω。

2.3 信号调理与ADC单元

信号调理与ADC单元用于将混合电路输出的模拟差分信号转换为输入信号并输入到FPGA, 该部分为数据采集的核心单元, 其硬件电路如图4所示。

由于被测信号的最高频率不超过2.048 MHz, 根据奈奎斯特采样定理, 使用4.096 MHz采样速率进行采样就能得到信号完整的信息, 但是在工程中, 通常使用5~10倍速率进行采样。因此ADC选择12位、10 MS/s采样速率模/数转换器AD9220, 其为+5 V单电源供电, 70 d B信噪比, 86 d B无杂散动态范围, 内置片内高性能、低噪声采样保持放大器和可编程基准电压源, 并具有满量程输出指示功能[7]。使用1 V基准电压时其输入范围为2 V (峰-峰值) 。

信号调理电路应当具有抗混叠滤波和信号幅度调节的功能。该电路选择全差分放大器AD8476组成, 考虑到检测时输入信号的幅值大于ADC的输入范围, 因而选择其输入电阻为10 kΩ, 选择数字电位器AD5272为反馈电阻RF, 则其增益值G4=RF/10 kΩ, 电路的增益值为0.000 2~2可调。放大器输出经过2个100Ω电阻和2个电容组成的低通滤波器后送至ADC。同时, AD8476以ADC的基准电压VREF为共模参考电压。

基于上述内容, 则可得数据采集通道ADC的输入信号VIN与二线接口输入检测信号U3之间的关系为:

式中, RF为信号调理电路数字电位器AD5272的阻值, RG为混合电路数字电位器AD5272的阻值。

2.4 FPGA单元

FPGA单元以Xilinx公司的FPGA芯片XC3S400为核心电路组成, 其程序存储芯片为XCF02S, 使用40 MHz有源晶振, 5 V电源供电, 使用稳压芯片提供电路所需的3.3 V、2.5 V和1.2 V电源。USB接口作为微处理器常用的外部总线接口, 目前已经得到了广泛的应用[8], 因此考虑选用USB2.0接口作为FPGA与上位机之间的数据接口。同时采用JTAG接口用于FPGA和其配置芯片的程序烧写。关于FPGA电路的设计、开发技术已经较为成熟, 本设计相比与其他通用FPGA电路的设计并无独特之处, 因此不再对FPGA单元进行详细描述。

3 FPGA程序设计

在检测接口电路的设计中, FPGA是检测接口电路的信息传输与控制单元的核心, 其可编程配置能力和能够高速、并行处理数字信号的能力是检测接口的灵活性和升级性的关键。其内部程序使用Xilinx公司的FPGA开发环境ISE进行设计并完成烧写。程序设计使用模块化设计思想, 其结构示意图如图5所示, 可以分USB传输、管理控制、DAC传输、输出增益控制、混合单元控制、信号调理控制、ADC传输控制和增益补偿8个模块。下面就各个模块的功能分别进行介绍。

(1) USB传输模块, 用于通过FPGA单元上的USB接口电路实现FPGA芯片与上位机的信息传输, 具有USB电路的配置功能, 并实现标准USB信号封装、解封装功能, 将接收到的上位机信号解封装为透明数据传送到管理控制模块和DAC传输模块, 将管理控制模块、增益补偿模块输出信号封装为标准USB信号通过USB接口电路传输到上位机。

(2) 管理控制模块, 是整个程序的主控单元。该模块用于接收USB传输模块输出的控制信号, 对其余的通信模块进行控制, 并输出检测电路的工作状态到USB传输模块, 最终传输到上位机。同时用于控制其余模块的工作状态, 接收混合单元控制模块、信号调理控制模块、ADC传输模块输出的反馈信息进行工作状判断, 根据混合单元控制模块、信号调理控制模块反馈信息控制增益补偿模块的补偿量。

(3) DAC传输模块, 在管理控制模块的控制下工作, 接收USB传输模块输出的激励信号, 并将信号转换为DAC芯片的数据输入信号, 同时为DAC芯片提供转换时钟。

(4) 输出增益控制模块, 用于在管理控制模块输出的控制信号下工作, 根据需求通过两路输出信号IN1和IN2分别控制差分放大电路的2个电子开关ADG736。

(5) 混合单元控制模块, 用于在管理控制模块输出的控制信号下工作, 根据需求通过输出I2C信号控制混合单元的数字电位计AD5272的阻值, 完成信号混合功能, 并将AD5272的阻值信息反馈给管理控制单元。

(6) 信号调理控制模块, 用于在管理控制模块输出的控制信号下工作, 根据需求通过输出2路I2C信号控制信号调理电路的2个数字电位计AD5272的阻值, 完成信号调理功能, 并将2个AD5272的阻值信息反馈给管理控制单元。

(7) ADC传输模块, 在管理控制模块的控制下工作, 接收DAC芯片输出的采样数据, 并将数据传输到增益补偿模块, 同时为ADC芯片提供采样时钟。该模块同时接收ADC输出的满量程指示信号和数据输入指示信号, 并传送给管理控制模块。

(8) 增益补偿模块, 用于接收来自ADC传输模块的采样数据和管理控制模块输出的增益补偿信息, 对ADC芯片采样获得的信号进行增益补偿, 实现检测信号的完整性。

4 结论

本文根据检测需求, 选择了以通用计算机和专用检测接口结合的检测系统, 重点描述了硬件检测接口的电路设计和FPGA硬件描述语言设计。差分放大、二线接口、混合、信号调理等电路单元通过仿真, 功能、性能均能达到设计要求。本设计能够为类似检测系统接口电路设计提供借鉴参考。

参考文献

[1]金伟, 齐世清, 王建国.现代检测技术[M].北京:北京邮电大学出版社, 2007:270-272.

[2]Analog Devices.12-bit, 125 MSPS TxDAC誖D/A converter AD9762 datasheet[EB/OL].[2014-05-14].http://www.analog.com.

[3]Analog Devices.低功耗、单位增益、全差分放大器和ADC驱动器AD8476数据手册[EB/OL].[2014-05-14].http://www.analog.com.

[4]Analog Devices.1nV/√Hz低噪声仪表放大器AD8429数据手册[EB/OL].[2014-05-14].http://www.analog.com.

[5]Linear Technology.Very low noise, differential amplifier and 10 MHz low pass filter LT6600-10 datasheet[EB/OL].[2014-05-14].http://www.linear.com.cn.

[6]Analog Devices.V024/256位、1%电阻容差误差、I2C接口和50-TP存储器数字变阻器AD5272数据手册[EB/OL].[2014-05-14].http://www.analog.com.

[7]Analog Devices.Complete 12-bit 1.5/3.0/10.0 MSPS monolithic A/D converters AD9220 datasheet[EB/OL].[2014-05-14].http://www.analog.com.

可编程器件 篇7

当前电子系统的设计正朝着速度快、容量大、体积小、质量轻、用电少的方向发展。推动该潮流迅猛发展的决定性的因素就是使用了现代化的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

可编程器件 篇8

超宽带通信中需要窄脉冲信号源[1]. 产生窄脉冲信号的常用器件有隧道二极管;雪崩晶体三极管、阶跃恢复二极管、俘越二极管、体效应管等模拟器件[2]。此外,还有ECL门电路;转移电子器件逻辑电路;超导逻辑电路;砷化镓场效应管逻辑电路等集成电路[3]。

在设计窄脉冲信号实现电路时,需要考虑脉冲的各项性能指标。不仅考虑上升沿与下降沿,脉冲宽度和幅度;还要考虑电路的成本、制作的复杂性以及脉冲产生器的体积等外在因素。使用可编程逻辑器件产生脉冲信号具有重大意义,它不涉及模拟器件,易于集成;由标准时钟边沿触发既可,容易驱动;脉冲重复频率可以从很低到很高,能较稳健的工作[4]。

本文设计一种使用可编程逻辑器件来产生窄脉冲的仿真电路,为实际制作窄脉冲电路奠定基础。文中分析了电路原理并进行了仿真实验,验证了电路设计的可行性,仿真实验获得了脉宽1.0ns、幅值1.3V的窄脉冲信号。

2 可编程逻辑器件定时模型的分析

可编程逻辑器件的连续式高性能互连布线资源确保了延时可预测性能和准确地仿真、定时分析。可编程逻辑器件的延时性能可以通过从信号源连接到指定目标的路径来估算。图1 描述了可编程逻辑器件的整体定时模型,它给出了器件内各个单元间可能的路径图[5]。

3 仿真实验

实验原理如图2 所示,脉冲产生器包括一个延时线模块和一个异或门( 或与门)。参考信号A和A通过延时线模块得到的延时信号B一起连接到异或门( 或与门)。根据异或门( 或与门) 的特性,当两个输入信号电平高低不同时( 输入信号电平相同时),便产生了窄脉冲。脉冲宽度T由通过延时线的延时时间Tpg决定,通过调整Tpg长短的不同,使脉冲产生器产生的极窄脉冲宽度T也不同;波形边沿主要由异或门( 或与门) 输出高电平的上升时间Tr和下降时间Tf决定,上升时间Tr和下降时间Tf限制了经典CMOS和TTL逻辑门不能获得足够窄的脉冲,如果Tr+Tf<T,则脉冲幅值下降。

从上节可知,可编程逻辑器件的延时性能可以通过从信号源连接到指定目标的路径来估算,由于可编程逻辑器件的连续式高性能互连布线资源,我们可以通过EDA软件对延时预测和准确地仿真。并且,不同的逻辑门,延时可能不同,如:在maxplus2 中,与门延时7.1ns,非门延时7.5ns,异或门10.4ns,下载到不同型号的芯片中,延时也可能不同。

我们通过调整不同的逻辑门来实现分别到达异或门两个输入端的时间T1 和T2 的不同,其差即为Tpg。仿真结果如图3 所示,得到脉宽为1.0ns、幅值为1.3V的窄脉冲信号。

当脉冲宽度扩展时,可得到脉冲幅度更大的脉冲,如图4 所示,获得脉冲宽度为1.3ns,幅值为1.8V的脉冲。而当要获得更窄的脉冲信号时,则需较大牺牲脉冲幅度。如图5所示,当脉冲宽度为0.8ns时,脉冲幅度为0.9V。

4 结束语

本文在分析可编程逻辑器件性能特点、器件结构以及器件的定时模型的基础上,研究了基于可编程逻辑的脉冲电路的产生,仿真了3 组脉冲,一组脉冲幅值1.3V、半幅脉宽1.0ns;一组脉冲幅值1.8V、半幅脉宽1.3ns;最后一组为脉冲幅值0.9V、半幅脉宽0.8ns。实验结果说明本文中的方法可有效产生窄脉冲,为实际制作窄脉冲电路奠定了基础。

参考文献

[1]黎海涛,徐继麟.超宽带雷达方程[J].电子科技大学学报,Vol,No。2,Apr,2015.

[2]D.J.Daniels,D.J.Gunton and H.E.Scott,Introduction to Subsurface Radar[J],IEEE Proc.Vol.35.No.4 2014.8,P278-320.

[3]Federal Communication Commission,Government Printing Office,Washington.First Report and Order:Revision of Part 15 of the Communications Rules Regarding Ultra-wideband Transmission System[J].April2014,ET Docket 98-153.

[4]Kurt L.Shlager and Glenn S.Smith,Optimization of Bow-Tie Antennas for Pulse Radiation[J].IEEE Trans.On Antennas and Propagation Vol.422014,7,P975-982.

可编程器件 篇9

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结语

上一篇:新准则视角下一篇:心血管不良事件