今天我们将带领大家完成你的第一个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机一台...

>> 阅读全文

打开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 WITH SW SELECT L "10" WHEN "101", "10" WHEN "110", "10" WHEN "111", "01" WHEN OTHERS; END co...

>> 阅读全文

此过程主要是用软件来仿真你的设计,看看结果是否符合你的设计要求 编译好以后,打开波形编辑器,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:设置网...

>> 阅读全文

和可靠性有关的几个概念
建立时间和保持时间
图1
建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间, 如果保持时间不够,数据同样不能被打入触发器。 如图1 。 数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。 PLD/FPGA开发软件可以自动计算两个相关输入的建立和保持时间(如图2)
竞争和冒险 几乎所有关于数字电路的教材,都会提到数字电路中的竞争和冒险问题,但是这个问题往往被我们忽略。我们可以先来回顾一下关于竞争和冒险的一些基本概念。
PLD内部毛刺产生的原因 我们在使用分立元件设计数字系统时,由于PCB走线时,存在分布电感和电容,所以几纳秒的毛刺将被自然滤除,而在PLD内部决无分布电感和电容,所以在PLD/FPGA设计中,竞争和冒险问题将变的较为突出。

>> 阅读全文

信号在FPGA器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为"毛刺"。如果一个组合逻辑电路中有"毛刺"出现,就说明该电路存在"冒险"。(与分立元件不同,由于PLD内部不存在寄生电容电感,这些毛刺将被完整的保留并向下一级传递,因此毛刺现象在PLD、FPGA设计中尤为突出) 图6.21给出了一个逻辑冒险的例子,从图6.22的仿真波形可以看出,"A、B、C、D"四个输入信号经过布线延时以后,高低电平变换不是同时发生的,这导致输出信号"OUT"出现了毛刺。(我们无法保证所有连线的长度一致,所以即使四个输入信号在输入端同时变化,但经过PLD内部的走线,到达或门的时间也是不一样的,毛刺必然产生)。可以概括的讲,只要输入信号同时变化,(经过内部走线)组合逻辑必将产生毛刺。 将它们的输出直接连接到时钟输...

>> 阅读全文

时钟信号 最关键的信号之一,有专门的论述,请参阅关于时钟问题的探讨 清除和置位信号
清除和置位信号要求象对待时钟那样小心地考虑它们,因为这些信号对毛刺也是非常敏感的。正如使用时钟那样,最好的清除和置位是从器件的引脚单直接地驱动。有一个主复位Reset引脚是常用的最好方法,主复位引脚给设计项目中每个触发器馈送清除或置位信号。几乎所有PLD器件都有专门的全局清零脚和全局置位。如果必须从器件内产生清除或置位信号,则要按照“门控时钟”的设计原则去建立这些信号,确保输入无毛刺。
若采用门控清除或者门控置位,则单个引脚或者触发器作为清除或置位的源,而有其它信号作为地址或控制线。在清除或复位的有效期间,地址或控制线必须保持稳定图4.2.13示出4个容许的清除和复位配置的实例。决不能用多级逻辑或包含竞争状态单级逻辑产生清除或置位信号。更详细的考虑见4.2.5节“竞争状态”。 组合逻辑输出
当PLD输出引脚给出系统内其它部分的边沿敏感信号或电平敏感信号时,这些出信号必须象内部时钟、清除和置位信号一样小心地对待。只要可能就应在PLD输出端寄存那些对险象敏感的组合输出。如果你不能寄存险象敏感的输出,...

>> 阅读全文

同步电路的速度是指同步时钟的速度。同步时钟愈快,电路处理数据的时间间隔越短,电路在单位时间处理的数据量就愈大。 我们先来看一看同步电路中数据传递的一个基本模型:如下图
图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。当然以上全部分析的都是器件内部的运行速度,如果考虑芯片I/O管脚延时对...

>> 阅读全文

数据接口的同步方法
数据接口的同步是 FPGA/CPLD 设计的一个常见问题,也是一个重点和难点,很多设计不稳定都是源于数据接口的同步有问题。 在电路图设计阶段,一些工程师手工加入 BUFT 或者非门调整数据延迟,从而保证本级模块的时钟对上级模块数据的建立、保持时间要求。还有一些工程师为了有稳定的采样,生成了很多相差 90 度的时钟信号,时而用正沿打一下数据,时而用负沿打一下数据,用以调整数据的采样位置。这两种做法都十分不可取,因为一旦芯片更新换代或者移植到其它芯片组的芯片上,采样实现必须从新设计。而且,这两种做法造成电路实现的余量不够,一旦外界条件变换 ( 比如温度升高 ) ,采样时序就有可能完全紊乱,造成电路瘫痪。 下面简单介绍几种不同情况下数据接口的同步方法: 1. 输入、输出的延时 ( 芯片间、 PCB 布线、一些驱动接口元件的延时等 ) 不可测,或者有可能变动的条件下,如何完成数据同步? 对于数据的延迟不可测或变动,就需要建立同步机制,可以用一个同步使能或同步指示信号。另外,使数据通过 RAM 或者 FIFO 的存取,也可以达到数据同步目的。 把数据存放在 RAM 或 FIFO 的方法如下:将上级芯片提供的数据随路时钟作为写...

>> 阅读全文