| 标题 |
作者 |
阅读数 |
发布时间 |
|
|
leemin |
56 |
2007-8-5 |
|
需要大量数字处理的电子系统常常利用FPGA或CPLD等现场可编程器件实现,而不是利用定制专用集成电路(ASIC)。虽然定制ASIC可能比现场可编程器件具有成本优势,但现场可编程器件具有即时制造周转、低启动成本以及设计速度和方便性等优点。这些优点已使FPGA和CPLD成为实现以太网交换机和路由器、存储局域网设备和多媒体内容传输系统等复杂数字系统的首选器件。
利用FPGA或CPLD进行电路设计的流程由以下几个普通步骤组成:设计入口、设计确认、设计汇编和器件编程。设计入口阶段由捕获设计组成,不是通过利用电脑辅助设计工具创建图形化原理图,就是通过利用Verilog或VHDL等硬件描述语言来描述电路。在捕获设计之后,通过使用电路模拟来检验正确的功能性和性能加以验证。如果电路没有达到要求性能,则工程师师就回到设计入口阶段对设计加以调整,然后重复设计验证阶段。设计入口和设计验证步骤可能反复多次,才能使设计能够满足全部功能和性能要求。在获得令人满意的设计之后,工程师使用FPGA或CPLD器件供应商提供的软件对设计进行“汇编”,用于对实现设计的器件进行配置。编译形成的文档被下载到FPGA或CPLD,并给内部逻辑器件编程使之...
>> 阅读全文
|
|
leemin |
3515 |
2007-8-5 |
|
打开MAX+plusII,在开始菜单内选择MAX+PLUS II 项,开始运行MAX+PLUS II(如下图)你最好把图标放到桌面上,以后直接双击MAX+PLUS II图标就可以运行软件了在MAX+PLUSII上点右键,选择发送到->桌面快捷方式(如下图),那么你桌面上就看到MAX+PLUS II了。3.2 新建VHDL文档
(图形和verilog-HDL设计的过程见后面的部分)FILE->NEW或者点下图的新建图标:连后选择Text Editor File文件,点OK如下图
3.3输入设计文件
在文本窗口中输入以下VHDL源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;--*********************************************ENTITY majority_voter IS PORT(SW : IN std_logic_vector(3 DOWNTO 1); L : OUT std_logic_vector(2 DOWNTO 1)); --L2 is a yellow LED AND L1 is a RED LEDEND majority_voter;--*********************************************ARCHITECTURE concurrent OF majority_voter IS
BEGIN >> 阅读全文
|
|
mhcy |
922 |
2007-8-10 |
|
美国作家克里腾登写过一篇题为《母亲的价格》的文章,提倡应把母亲所做和各项工作量化,给她们应有的肯定。她指出,母亲的工作是一项“技术性的中级管理”工作。若母亲的工作可获薪水,合理的年薪约为六万美元。 著名的“埃德尔曼财经服务组织”经过缜密的计算与评估,得出这样的结论:若将母亲所做各项工作改为出钱聘人代劳,那么,子女一年所付的工钱高达63.5万美元。可以用说,母亲的工资足以与大公司总裁相比。 不要说63.5万美元的年薪了,即便是6万美元一年的工资,又有多少子女能够支付得起呢?原来我们在享受母爱的同时,不知不觉之间,已经欠下了母亲那么巨大的一笔薪水。而我们自己,却依然那么心安理得。我们常常说母爱无价,是不是也有为自己掩饰什么的意图呢? 母亲们却不知道这些。我想天底下的母亲,大约没有几个知道自己一年能拿到这么多的薪水,即便知道了,可能也是一笑了之,没有人真会向子女伸手要这笔钱吧。譬如计算出母亲合理年薪为六万美元的克里腾登,如果她有子女,大概也不会在年底说:孩子,该给我发工...
>> 阅读全文
|
|
mhcy |
170 |
2007-8-15 |
|
IFxx表达式 ;条件满足,汇编分支语句体1 分支语句体1 [ ELSE ;条件不满足,汇编分支语句体2 分支语句体2 ]ENDIF ;条件汇编结束 其中,IF后跟的xx表示组成条件汇编伪指令的其他字符。 IF/IFE伪指令中的表达式可以采用第3章学习的关系运算符EQ(相等)、NE(不相等)、GT(大于)、LT(小于)、GE(大于等于)、LE(小于等于)。关系表达式用0ffffh(非0)表示真,用0表示假。 条件汇编伪指令格式功能说明IF 表达式汇编程序求出表...
>> 阅读全文
|
|
leemin |
564 |
2007-8-5 |
|
此过程主要是用软件来仿真你的设计,看看结果是否符合你的设计要求
编译好以后,打开波形编辑器,MAX+PLUSII->Waveform Editor载入端口,Node->Enter Nodes from SNF将弹出下面窗口,你按下面步骤操作:点List,将出现端口列表,你默认是选择全部,你也可以通过左键和Ctrl组合来选择你想要的信号。
点=>将你的信号加入SNF文件中
点OK为了方便观察,我们把信号展开如果需要再次合并可以按住SHIFT键,用鼠标左键选上要合并的信号,再点右键->Enter Group
下面我们将对信号进行赋值,首先选中一个要赋值的信号区间,如SW3的10us到20us范围,按住鼠标左键,在SW3的10us到20us的范围只能够那拉出一个黑色区域,松开鼠标左键,再点左边工具栏上的“1”,使这个时间段,SW3就被赋值为高电平,如下图:
(注意时间不要选择太小,比如就选10ns,这样结果可能不对,因为电路的延迟可能就达到10ns)
你将其他信号按你希望的加上激励
在上面过程中,你可能要遇到下面设置:Snap to Grid:鼠标按网格选取,用鼠标左键可以决定是否选取
Show Grid:显示网格
Gride Size:设置网格大小(这个非常有用,在你一些设计中经常要改变网格大小,便于你选择)En...
>> 阅读全文
|
|
leemin |
217 |
2007-8-5 |
|
时钟信号
最关键的信号之一,有专门的论述,请参阅关于时钟问题的探讨
清除和置位信号
清除和置位信号要求象对待时钟那样小心地考虑它们,因为这些信号对毛刺也是非常敏感的。正如使用时钟那样,最好的清除和置位是从器件的引脚单直接地驱动。有一个主复位Reset引脚是常用的最好方法,主复位引脚给设计项目中每个触发器馈送清除或置位信号。几乎所有PLD器件都有专门的全局清零脚和全局置位。如果必须从器件内产生清除或置位信号,则要按照“门控时钟”的设计原则去建立这些信号,确保输入无毛刺。
若采用门控清除或者门控置位,则单个引脚或者触发器作为清除或置位的源,而有其它信号作为地址或控制线。在清除或复位的有效期间,地址或控制线必须保持稳定图4.2.13示出4个容许的清除和复位配置的实例。决不能用多级逻辑或包含竞争状态单级逻辑产生清除或置位信号。更详细的考虑见4.2.5节“竞争状态”。
组合逻辑输出
当PLD输出引脚给出系统内其它部分的边沿敏感信号或电平敏感信号时,这些出信号必须象内部时钟、清除和置位信号一样小心地对待。只要可能就应在PLD输出端寄存那些对险象敏感的组合输出。如果你不能寄存险象敏感的...
>> 阅读全文
|
|
leemin |
20 |
2007-8-5 |
|
保密的重要性 对电子系统而言,FPGA的保密性极其重要。图1列出了两个系统设计的示意图,左边为1995年所作的系统设计,在该设计中,以ASIC芯片为核心,FPGA仅起到胶合逻辑的作用;在右边2005年进行的同类型系统设计中,不难发现FPGA已经成为系统设计的核心,它整合了原有ASIC及部分ASSP芯片的功能,因此FPGA作为系统芯片直接取代了ASIC的功能。随着FPGA性能、容量与功能的不断提升,今天的FPGA 已成为系统的心脏、知识产权的集合,所以如果FPGA存在安全性问题的话,与其相关的产品将遭受严重打击。 保密性定义——四个对FPGA最大的安全威胁 a.克隆 克隆是指竞争对手 拷贝启动 PROM 或从板上拦截处理器码流并进行复制。如果设...
>> 阅读全文
|
|
leemin |
438 |
2007-8-5 |
|
信号在FPGA器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为"毛刺"。如果一个组合逻辑电路中有"毛刺"出现,就说明该电路存在"冒险"。(与分立元件不同,由于PLD内部不存在寄生电容电感,这些毛刺将被完整的保留并向下一级传递,因此毛刺现象在PLD、FPGA设计中尤为突出)
图6.21给出了一个逻辑冒险的例子,从图6.22的仿真波形可以看出,"A、B、C、D"四个输入信号经过布线延时以后,高低电平变换不是同时发生的,这导致输出信号"OUT"出现了毛刺。(我们无法保证所有连线的长度一致,所以即使四个输入信号在输入端同时变化,但经过PLD内部的走线,到达或门的时间也是不一样的,毛刺必然产生)。可以概括的讲,只要输入信号同时变化,(经过内部走线)组合逻辑必将产生毛刺。 将它们的输出直接连接到时钟输...
>> 阅读全文
|
|
leemin |
18 |
2007-8-6 |
|
同步电路的速度是指同步时钟的速度。同步时钟愈快,电路处理数据的时间间隔越短,电路在单位时间处理的数据量就愈大。
我们先来看一看同步电路中数据传递的一个基本模型:如下图 图1
(Tco是触发器时钟到数据输出的延时;Tdelay是组合逻辑的延时;Tsetup是触发器的建立时间)
假设数据已经被时钟的上升沿打入D触发器,那么数据到达第一个触发器的Q端需要Tco,再经过组合逻辑的延时Tdelay到达的第二个触发器的D端,要想时钟能在第二个触发器再次被稳定的锁入触发器,则时钟的延迟不能晚于Tco+Tdelay+Tsetup,(我们可以回顾一下前面讲过的建立和保持时间的概念,就可以理解为什么公式最后要加上一个Tdelay) 由以上分析可知:最小时钟周期:T=Tco+Tdelay+Tsetup 最快时钟频率 F= 1/T PLD开发软件也正是通过这个公式来计算系统运行速度Fmax
注:在这个逻辑图中有个参数:Tpd ,即时钟的延时参数,我们在刚才做时间分析的时候,没有提这个参数,(如果使用PLD的全局时钟型号,Tpd可以为0,如果是普通时钟,则不为0)。所以如果考虑到时钟的延时,精确的公式应该是T=Tco+Tdelay+Tsetup-Tpd。当然以上全部分析的都是器件内部的运行速度,...
>> 阅读全文
|
|
mhcy |
146 |
2007-8-15 |
|
& ——替换操作符,用于将参数与其他字符分开。如果参数紧接在其他字符之前或之后,或者参数出现在带引号的字符串中,就必须使用该伪操作符。 ——字符串传递操作符,用于括起字符串。在宏调用中,如果传递的字符串实参数含有逗号、空格等间隔符号,则必须用这对操作符,以保证字符串的完整。 ! ——转义操作符,用于指示其后的一个字符作为一般字符,而不含特殊意义。 %——表达式操作符,用在宏调用中,表示将后跟的一个表达式的值作为实参,而不是将表达式本身作为参数。 ;;——宏注释符,用于表示在宏定义中的注释。采用这个符号的注释,在宏展开时不出现。
>> 阅读全文
|
|
leemin |
230 |
2007-8-5 |
|
数据接口的同步方法
数据接口的同步是 FPGA/CPLD 设计的一个常见问题,也是一个重点和难点,很多设计不稳定都是源于数据接口的同步有问题。
在电路图设计阶段,一些工程师手工加入 BUFT 或者非门调整数据延迟,从而保证本级模块的时钟对上级模块数据的建立、保持时间要求。还有一些工程师为了有稳定的采样,生成了很多相差 90 度的时钟信号,时而用正沿打一下数据,时而用负沿打一下数据,用以调整数据的采样位置。这两种做法都十分不可取,因为一旦芯片更新换代或者移植到其它芯片组的芯片上,采样实现必须从新设计。而且,这两种做法造成电路实现的余量不够,一旦外界条件变换 ( 比如温度升高 ) ,采样时序就有可能完全紊乱,造成电路瘫痪。
下面简单介绍几种不同情况下数据接口的同步方法:
1. 输入、输出的延时 ( 芯片间、 PCB 布线、一些驱动接口元件的延时等 ) 不可测,或者有可能变动的条件下,如何完成数据同步?
对于数据的延迟不可测或变动,就需要建立同步机制,可以用一个同步使能或同步指示信号。另外,使数据通过 RAM 或者 FIFO 的存取,也可以达到数据同步目的。
把数据存放在 RAM 或 FIFO 的方法如下:将上级芯片提供的数据随路时钟作为...
>> 阅读全文
|
|
leemin |
373 |
2007-8-5 |
|
FPGA/CPLD 的设计思想与技巧是一个非常大的话题,由于篇幅所限,本文仅介绍一些常用的设计思想与技巧,包括乒乓球操作、串并转换、流水线操作和数据接口的同步方法。希望本文能引起工程师们的注意,如果能有意识地利用这些原则指导日后的设计工作,将取得事半功倍的效果!
乒乓操作 “ 乒乓操作 ” 是一个常常应用于数据流控制的处理技巧,典型的乒乓操作方法如图 1 所示。
乒乓操作的处理流程为:输入数据流通过 “ 输入数据选择单元 ” 将数据流等时分配到两个数据缓冲区,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口 RAM(DPRAM) 、单口 RAM(SPRAM) 、 FIFO 等。在第一个缓冲周期,将输入的数据流缓存到 “ 数据缓冲模块 1” ;在第 2 个缓冲周期,通过 “ 输入数据选择单元 ” 的切换,将输入的数据流缓存到 “ 数据缓冲模块 2” ,同时将 “ 数据缓冲模块 1” 缓存的第 1 个周期数据通过 “ 输入数据选择单元 ” 的选择,送到 “ 数据流运算处理模块 ” 进行运算处理;在第 3 个缓冲周期通过 “ 输入数据选择单元 ” 的再次切换,将输入的数据流缓存到 “ 数据缓冲模块 1” ,同时将 “ 数据缓冲模块 2” 缓存的第 2 个周期的数据通过 ...
>> 阅读全文
|
|
leemin |
363 |
2007-8-5 |
|
和可靠性有关的几个概念建立时间和保持时间图1
建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间, 如果保持时间不够,数据同样不能被打入触发器。 如图1 。 数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。 PLD/FPGA开发软件可以自动计算两个相关输入的建立和保持时间(如图2)竞争和冒险
几乎所有关于数字电路的教材,都会提到数字电路中的竞争和冒险问题,但是这个问题往往被我们忽略。我们可以先来回顾一下关于竞争和冒险的一些基本概念。PLD内部毛刺产生的原因
我们在使用分立元件设计数字系统时,由于PCB走线时,存在分布电感和电容,所以几纳秒的毛刺将被自然滤除,而在PLD内部决无分布电感和电容,所以在PLD/FPGA设计中,竞争和冒险问题将变的较为突出。
>> 阅读全文
|
|
leemin |
449 |
2007-8-5 |
|
今天我们将带领大家完成你的第一个PLD设计,即使你从没有接触过PLD,也可以让你可以在十分种之内初步学会PLD设计! 不信? 呵呵 我们慢慢往下看。
实验目的
我们分别采用VHDL、Verilog-HDL和原理图输入方式设计一个简单的三人表决器,,并下载到PLD实验板进行实际运行。
三人表决器的功能描述:三个人分别用手指拨动开关SW1、SW2、SW3来表示自己的意愿,如果对某决议同意,各人就把自己的指拨开关拨到高电平(上方),不同意就把自己的指拨开关拨到低电平(下方)。表决结果用LED(高电平亮)显示,如果决议通过那么实验板上L2(黄灯)亮;如果不通过那么实验板上L1(红灯)亮;如果对某个决议有任意二到三人同意,那么此决议通过,L2亮;如果对某个决议只有一个人或没人同意,那么此决议不通过,L1亮
功能虽然简单,但是大家可以从这个实验中学习到PLD的设计输入,仿真,下载等一个完整过程。
软件准备
本次实验采用Max+plusII 10.2 软件,首先我们需要下载免费软件并安装license。对于WindowsNT/2000/XP,还需要安装下载电缆的驱动程序。
>> 软件安装和license的获取请点击此处
>> 安装下载电缆的驱动程序请点击此处
硬件准备
PC机...
>> 阅读全文
|
|
leemin |
125 |
2007-8-5 |
|
串并转换设计技巧 串并转换是 FPGA 设计的一个重要技巧,它是数据流处理的常用手段,也是面积与速度互换思想的直接体现。串并转换的实现方法多种多样,根据数据的排序和数量的要求,可以选用寄存器、 RAM 等实现。前面在乒乓操作的图例中,就是通过 DPRAM 实现了数据流的串并转换,而且由于使用了 DPRAM ,数据的缓冲区可以开得很大,对于数量比较小的设计可以采用寄存器完成串并转换。如无特殊需求,应该用同步时序设计完成串并之间的转换。比如数据从串行到并行,数据排列顺序是高位在前,可以用下面的编码实现:
prl_temp<={prl_temp,srl_in};
其中, prl_temp 是并行输出缓存寄存器, srl_in 是串行数据输入。对于排列顺序有规定的串并转换,可以用 case 语句判断实现。对于复杂的串并转换,还可以用状态机实现。串并转换的方法比较简单,在此不必赘述。
流水线操作设计思想
首先需要声明的是,这里所讲述的流水线是指一种处理流程和顺序操作的设计思想,并非 FPGA 、 ASIC 设计中优化时序所用的 “Pipelining” 。
流水线处理是高速设计中的一个常用设计手段。如果某个设计的处理流程分为若干步骤,而且整个数据处理是 “ 单流向 ...
>> 阅读全文
|