可编程逻辑器件(PLD)在工业、自动控制、信号处理和日常生活等方面都发挥着愈来愈大的作用。isp(在系统可编程)器件就是PLD中的一朵奇葩,它以其良好的系统性能、较强的设计灵活性、较高的逻辑利用率和优越的E2CMOS工艺而得到了电路设计者们的青睐。本设计就是采用Lattice公司的高密度在系统可编程芯片pLSI/ispLSI1016设计的一个通信数字信号源。设计中采用两套地址总线(微机总线与isp总线)分时对两片RAM进行读写操作,并采用不断查询端口的方式进行协调控制,从而产生出满足设计要求的数字码流。
1 isp系统介绍
1.1 概述
在系统可编程器件是近几年来兴起的一种PLD器件。所谓在系统可编程,是指在用户自己设计的目标系统中或线路板上为重构逻辑器件进行编程或反复编程的能力。常规PLD通常是先编程后装配,而采用isp技术的PLD则是先装配后编程,成为产品之后还可反复编程。在系统可编程器件的出现使得当今数字电子系统设计的面貌焕然一新。采用isp技术之后硬件设计可以变得象软件那样灵活而易于修改,硬件的功能可以实时地加以修改或按预定程序改变组态,这不仅扩展了器件的用途,缩短了系统调试周期,而且还省却了对器件单独编程的环节和器件编程设备,简化了目标设备的现场升级和维护工作。isp是美国Lattice半导体公司生产的可编程逻辑器件的专用商标,该公司生产的PLD在工艺上吸收了E2PROM的浮栅技术,并与CMOS静态RAM相结合,开拓了能长期保持数据的E2CMOS技术。目前所有的GALpLSI/ispLSI都应用了Lattice公司的高速UltraMOS E2CMOS技术。Lattice公司已将其独特的isp技术应用到它的高密度可编程逻辑器件(HDPLD)中,形成ispLSI系列高密度在系统可编程逻辑器件,使得isp成为新产品研制和开发的理想工具。
1.2 isp器件的特点
可编程逻辑器件的在系统编程能力必将更新人们设计、制造和维护电子系统的方法,具有如下特点:
•在系统编程允许用户“在系统之中”编程或修改逻辑设计,而无需将器件从线路板上拆上拆下。这就加速了系统和线路板的调试过程,便于用户在设计过程中更早地确定线路板的布局。
•当对传统的PLD器件进行编程时,其测试、制造过程总是免不了人工处置。采用ispLSI器件之后,可以将芯片直接焊接在印刷电路板上,然后再进行编程或改写。这就保证了调试制造过程中绝不会损伤器件的引脚。
•ispLSI器件在焊接到印刷电路板上之后,仍可毫不困难地修改其逻辑功能,于是用户可在同一块电路板上实现各种硬件结构。
•通过软件重构系统,ispLSI器件的现场改写只需从磁盘装入或通过调制解调器送入结构文件,实现起来非常容易,而且还可实现远距离遥控编程。
•所有ispLSI器件都为用户提供了一个保密位来防止对片内编程模式的非法复制。保密位仅能在芯片改写时被擦除,因而一旦被编程后就无法读出芯片内原有的内部结构。
此外ispLSI器件也可以用市售的通用逻辑编程器来进行编程。
1.3 pLSI/ispLSI1000系列的结构及特点
pLSI/ispLSI逻辑块的基本单位是万能逻辑块(GLB),这种万能逻辑块由四个输出逻辑宏单元(OLMC)组成。每个GLB中有18个输入、一个可编程的与/或/异或阵列和4个输出。GLB的输入来自于集总布线区(GRP Global Routing Pool)和直通输入。所有GLB的输出都送至集总布线区,因此可使它们与器件中其它GLB的输入相连,如图1所示。
由8个GLB、16个I/O单元和两个直通输入互相连接而构成一个大块(Megablock)。这8个GLB的输出通过输出布线区(ORP The Output Routing Pool)被连至16个通用I/O单元。每一个大块共享一个输出使能控制信号。
pLSI/ispLSI器件由于逻辑输入端多,逻辑块划分较细腻而优越于一般的可编程逻辑器件。它之所以设计灵活,逻辑利用率高,是由于它具有灵活的布线资源和可供选择的宏单元时钟,还有输入寄存器和丰富的使能信号。pLSI/ispLSI器件编程速度快,出厂前100%经过测试,因此在系统编程能力、质量、可靠性和生产率方面都领先于一般的PLD。对于pLSI/ispLSI1016而言,它包括96个寄存器、4个直通输入、3个直通输入时钟和一个集总布线区。isp1016具有5V在系统编程和在系统监测能力。isp1016共包括2个大块,内含16个GLB。该器件同时具有32个I/O单元和4个直通输入,它们都直接连至I/O引脚。每一个I/O单元都可以单独编程为组合输入、寄存器输入、锁存器输入、输出或是具有三态控制的双向I/O引脚。
2 系统设计原理及框图
2.1 设计原理
本设计的任务是设计一个数字信号源。要求码长可变;数据格式是可以符合任何一种建议的数据格式;码速率可调且在1~10Mbps之间。为此,在设计之初采用了以下方案,框图如图2所示,其中八分频电路,可置数的地址计数器电路及并/串转换电路由isp器件编程实现。为了实现码速在1~10Mbps之间可调,特采用DDS器件产生出1~10MHz的正弦波信号,经过整形及滤波电路而形成方波,即主控时钟CLK信号。主控时钟经过8分频电路而形成CLK0信号,它成为可置数的地址计数器的计数脉冲。同时CLK0信号经过反相成为并/串转换电路的置入(采样)脉冲信号fsa,而CLK 信号经过反相成为并/串转换电路的时钟信号fcp,这样CLK信号的速率就决定了所产生的数据码流的速率。在EPROM存储器中存放着符合一定数据格式的数据。这样由可置数的地址计数器循环地长度可变地读出EPROM中的数据(以byte为单位),经过并/串转换电路便产生了码长可变、码速可变的数字码流。
但是,考虑到EPROM编程及擦写的过程比较繁琐,数据不易改写,灵活性及通用性较差,因此,经过比较决定采用第二种方案。其框图如图3所示。
在第二种方案中,isp器件仍由编程实现八分频电路、地址译码器电路及并/串转换电路的功能。图3中,端口电路的作用主要是通过不断查询B15的状态,从而控制两片RAM的读写进程。控制电路主要包括地址线选择控制,存储器片选控制,读写及输出使能端控制以及总线驱动控制等。设计中采用两片RAM进行分时读写操作,这样做的目的是使数据信号的设计具有更大的灵活性。当微机对RAM1进行写操作的同时,由isp器件中的地址计数译码对RAM2进行读操作,读出的数据经isp内并/串转换部分而输出数据信号OUT;同样地,当微机对RAM2进行写操作的同时,由isp器件中的地址计数译码对RAM1进行读操作,读出的数据经isp内并/串转换部分而输出数字信号流OUT。如此往复循环,从而方便灵活地产生出符合设计要求的数字码流。
由于设计中采用两套地址总线进行分时读写操作,而分时读写操作的切换主要是利用ispLSI1016中地址计数译码电路的最高位—B15。在整个工作期间,两片RAM都应处于被选中的状态,即片选信号均应为低电平。当微机对一片RAM进行写操作时,要保证ispLSI1016对另一片RAM进行读操作,每一片RAM都有2个双向数据收发器74LS245与之相连接。其中一个固定为输入→输出,对应为ispLSI1016从RAM中读出数据;另外一个固定为输出→输入,对应为微机向RAM写数据。
由于写操作是通过编程由微机控制的,速度较快,而读操作是由ispLSI1016控制的,速度较慢,这就很有可能出现读写操作的混乱。为了防止这种情况的发生,在设计中增加了端口电路部分。我们可以在系统程序中增加一段不断查询端口的语句,而标志位就为B15(因为对一片RAM而言,B15信号电平的改变就意味着读写状态的改变)。当查询到标志位发生改变时,立即进行下一轮读写;当查询到标志位不变时,继续查询,直至其发生改变为止,然后进行下一轮读写。
对于ispLSI1016的时钟输入,可以使用DDS?直接数字频率合成 构造一个可变频率的正弦波产生电路,然后再进行波形变换而形成一个方波脉冲信号。但是为了简单起见,也可使用一个4MHz的晶体和基本门电路搭成一个具有一定频率稳定度的方波产生电路。
前面已经提到过ispLSI1016由编程实现八分频电路、地址计数译码电路、并/串转换电路的功能。其中八分频电路可以看作是一个3位的计数器,它的进位信号就是外部输入时钟的八分频信号;地址计数译码电路也可以看作是一个16位的地址计数器,它的低15位就是作为输出的地址信号,它的最高位B15是做为控制信号来使用的;并/串转换电路可以看作是一个八位的移位寄存器,它的移出信号就是所要产生的数据码流信号。
2.2 系统程序设计
系统程序主要完成以下功能:由微机将符合一定建议数据格式的数据写入RAM中,查询端口的状态并完成相应的操作,结束系统的工作等。系统程序流程图如图4所示。
3 isp编程设计
3.1 在系统编程原理
ispLSI器件的编程是由片内状态机控制的,状态的输入即为进入片内的五个编程接口信号。图5给出了在系统编程电路的典型结构。
图中编程信号来自专门的在系统编程控制电路。编程过程即为把JEDEC形式的熔丝图传送到器件中的过程。ispLSI器件有两种模式:正常工作模式与编程模式。器件的工作模式是由在系统编程使能信号ispEN控制的。ispLSI器件一旦进入编程模式,器件的编程操作就完全受片内isp状态机控制。在五个编程控制信号中,ispEN信号用来使能或取消其他四个编程控制信号。它们是:数据串入信号SDI、模式控制信号MODE、数据串出信号SDO和串行时钟信号SCLK。在SCLK的作用下,来自JEDEC文件的编程信息通过SDI端口串行地移入器件,同时通过SDO端口移出。SCLK同时也驱动片内状态机工作。当器件处于正常工作模式时,4个编程控制信号端口可以用作普通的直通输入端。对ispLSI器件编程有多种方法。其中最简单的是直接把isp编程引脚当作专用的编程端口。用如图5那样的并行编程结构来进行编程。
3.2 设计软件简介
如前所述,isp由编程实现八分频电路、地址计数器电路以及并/串转换电路的功能。在这里对isp编程采用原理图设计法,即先设计出满足上述功能的原理图,然后生成JEDEC形式的熔丝图,再写入isp器件中。
我们使用的绘制原理图的软件为OrCAD System公司的OrCAD/SDT IV。需要注意的是,因为要使用OrCAD Systems公司的WDOWNLD软件包进行对ispLSI1016的编程写入,所以在绘图时要采用库LSC.LIB(Lattice Semiconductor Corporation Library)中的元件。也就是说,要使用LSC库中基本逻辑门和D触发器来绘制出具有上述三种功能的isp编程原理图。
在原理图绘制完毕之后,就可以用OrCAD/SDT IV中的网络表制作功能生成网络表.EDN文件,此时还可使用OrCAD/VST进行数字电路的逻辑模拟。在电路连接网表文件生成以后,就可以使用pDS+ OrCAD Software软件包生成JEDEC形式的熔丝图文件了。有关pDS+ OrCAD Software的资料请参考文献[4]。当具有标准JEDEC格式的熔丝图文件生成以后,就可以使用WDOWNLD软件包(即DOWNLOAD for Windows)对isp器件进行编程写入了。下载电缆线是专用的ispDOWNLOAD CABLE,它的一端是25针的并行接口,另一端是一个8脚的插座。对WDOWNLOAD软件感兴趣的读者请参考相关的资料。
经过上述步骤,pLSI/ispLSI1016就成为一个具有一定功能的逻辑器件了,我们也就可以在系统电路板上使用它了。
总之,美国Lattice 公司将“在系统可编程(isp)”技术应用到高密度可编程器件中,形成既有可编程逻辑器件(PLD)的性能与特点,又有现场可编程逻辑阵列(FPGA)高密度和灵活性的在系统可编程逻辑器件。本设计就是对这种器件进行了一定的开发及应用,设计出一种通用数字信号源。有关isp器件的开发及应用还值得我们作进一步的探索
可编程逻辑器件(PLD)在工业、自动控制、信号处理和日常生活等方面都发挥着愈来愈大的作用。isp(在系统可编程)器件就是PLD中的一朵奇葩,它以其良好的系统性能、较强的设计灵活性、较高的逻辑利用率和优越的E2CMOS工艺而得到了电路设计者们的青睐。本设计就是采用Lattice公司的高密度在系统可编程芯片pLSI/ispLSI1016设计的一个通信数字信号源。设计中采用两套地址总线(微机总线与isp总线)分时对两片RAM进行读写操作,并采用不断查询端口的方式进行协调控制,从而产生出满足设计要求的数字码流。
1 isp系统介绍
1.1 概述
在系统可编程器件是近几年来兴起的一种PLD器件。所谓在系统可编程,是指在用户自己设计的目标系统中或线路板上为重构逻辑器件进行编程或反复编程的能力。常规PLD通常是先编程后装配,而采用isp技术的PLD则是先装配后编程,成为产品之后还可反复编程。在系统可编程器件的出现使得当今数字电子系统设计的面貌焕然一新。采用isp技术之后硬件设计可以变得象软件那样灵活而易于修改,硬件的功能可以实时地加以修改或按预定程序改变组态,这不仅扩展了器件的用途,缩短了系统调试周期,而且还省却了对器件单独编程的环节和器件编程设备,简化了目标设备的现场升级和维护工作。isp是美国Lattice半导体公司生产的可编程逻辑器件的专用商标,该公司生产的PLD在工艺上吸收了E2PROM的浮栅技术,并与CMOS静态RAM相结合,开拓了能长期保持数据的E2CMOS技术。目前所有的GALpLSI/ispLSI都应用了Lattice公司的高速UltraMOS E2CMOS技术。Lattice公司已将其独特的isp技术应用到它的高密度可编程逻辑器件(HDPLD)中,形成ispLSI系列高密度在系统可编程逻辑器件,使得isp成为新产品研制和开发的理想工具。
1.2 isp器件的特点
可编程逻辑器件的在系统编程能力必将更新人们设计、制造和维护电子系统的方法,具有如下特点:
•在系统编程允许用户“在系统之中”编程或修改逻辑设计,而无需将器件从线路板上拆上拆下。这就加速了系统和线路板的调试过程,便于用户在设计过程中更早地确定线路板的布局。
•当对传统的PLD器件进行编程时,其测试、制造过程总是免不了人工处置。采用ispLSI器件之后,可以将芯片直接焊接在印刷电路板上,然后再进行编程或改写。这就保证了调试制造过程中绝不会损伤器件的引脚。
•ispLSI器件在焊接到印刷电路板上之后,仍可毫不困难地修改其逻辑功能,于是用户可在同一块电路板上实现各种硬件结构。
•通过软件重构系统,ispLSI器件的现场改写只需从磁盘装入或通过调制解调器送入结构文件,实现起来非常容易,而且还可实现远距离遥控编程。
•所有ispLSI器件都为用户提供了一个保密位来防止对片内编程模式的非法复制。保密位仅能在芯片改写时被擦除,因而一旦被编程后就无法读出芯片内原有的内部结构。
此外ispLSI器件也可以用市售的通用逻辑编程器来进行编程。
1.3 pLSI/ispLSI1000系列的结构及特点
pLSI/ispLSI逻辑块的基本单位是万能逻辑块(GLB),这种万能逻辑块由四个输出逻辑宏单元(OLMC)组成。每个GLB中有18个输入、一个可编程的与/或/异或阵列和4个输出。GLB的输入来自于集总布线区(GRP Global Routing Pool)和直通输入。所有GLB的输出都送至集总布线区,因此可使它们与器件中其它GLB的输入相连,如图1所示。
由8个GLB、16个I/O单元和两个直通输入互相连接而构成一个大块(Megablock)。这8个GLB的输出通过输出布线区(ORP The Output Routing Pool)被连至16个通用I/O单元。每一个大块共享一个输出使能控制信号。
pLSI/ispLSI器件由于逻辑输入端多,逻辑块划分较细腻而优越于一般的可编程逻辑器件。它之所以设计灵活,逻辑利用率高,是由于它具有灵活的布线资源和可供选择的宏单元时钟,还有输入寄存器和丰富的使能信号。pLSI/ispLSI器件编程速度快,出厂前100%经过测试,因此在系统编程能力、质量、可靠性和生产率方面都领先于一般的PLD。对于pLSI/ispLSI1016而言,它包括96个寄存器、4个直通输入、3个直通输入时钟和一个集总布线区。isp1016具有5V在系统编程和在系统监测能力。isp1016共包括2个大块,内含16个GLB。该器件同时具有32个I/O单元和4个直通输入,它们都直接连至I/O引脚。每一个I/O单元都可以单独编程为组合输入、寄存器输入、锁存器输入、输出或是具有三态控制的双向I/O引脚。
2 系统设计原理及框图
2.1 设计原理
本设计的任务是设计一个数字信号源。要求码长可变;数据格式是可以符合任何一种建议的数据格式;码速率可调且在1~10Mbps之间。为此,在设计之初采用了以下方案,框图如图2所示,其中八分频电路,可置数的地址计数器电路及并/串转换电路由isp器件编程实现。为了实现码速在1~10Mbps之间可调,特采用DDS器件产生出1~10MHz的正弦波信号,经过整形及滤波电路而形成方波,即主控时钟CLK信号。主控时钟经过8分频电路而形成CLK0信号,它成为可置数的地址计数器的计数脉冲。同时CLK0信号经过反相成为并/串转换电路的置入(采样)脉冲信号fsa,而CLK 信号经过反相成为并/串转换电路的时钟信号fcp,这样CLK信号的速率就决定了所产生的数据码流的速率。在EPROM存储器中存放着符合一定数据格式的数据。这样由可置数的地址计数器循环地长度可变地读出EPROM中的数据(以byte为单位),经过并/串转换电路便产生了码长可变、码速可变的数字码流。
但是,考虑到EPROM编程及擦写的过程比较繁琐,数据不易改写,灵活性及通用性较差,因此,经过比较决定采用第二种方案。其框图如图3所示。
在第二种方案中,isp器件仍由编程实现八分频电路、地址译码器电路及并/串转换电路的功能。图3中,端口电路的作用主要是通过不断查询B15的状态,从而控制两片RAM的读写进程。控制电路主要包括地址线选择控制,存储器片选控制,读写及输出使能端控制以及总线驱动控制等。设计中采用两片RAM进行分时读写操作,这样做的目的是使数据信号的设计具有更大的灵活性。当微机对RAM1进行写操作的同时,由isp器件中的地址计数译码对RAM2进行读操作,读出的数据经isp内并/串转换部分而输出数据信号OUT;同样地,当微机对RAM2进行写操作的同时,由isp器件中的地址计数译码对RAM1进行读操作,读出的数据经isp内并/串转换部分而输出数字信号流OUT。如此往复循环,从而方便灵活地产生出符合设计要求的数字码流。
由于设计中采用两套地址总线进行分时读写操作,而分时读写操作的切换主要是利用ispLSI1016中地址计数译码电路的最高位—B15。在整个工作期间,两片RAM都应处于被选中的状态,即片选信号均应为低电平。当微机对一片RAM进行写操作时,要保证ispLSI1016对另一片RAM进行读操作,每一片RAM都有2个双向数据收发器74LS245与之相连接。其中一个固定为输入→输出,对应为ispLSI1016从RAM中读出数据;另外一个固定为输出→输入,对应为微机向RAM写数据。
由于写操作是通过编程由微机控制的,速度较快,而读操作是由ispLSI1016控制的,速度较慢,这就很有可能出现读写操作的混乱。为了防止这种情况的发生,在设计中增加了端口电路部分。我们可以在系统程序中增加一段不断查询端口的语句,而标志位就为B15(因为对一片RAM而言,B15信号电平的改变就意味着读写状态的改变)。当查询到标志位发生改变时,立即进行下一轮读写;当查询到标志位不变时,继续查询,直至其发生改变为止,然后进行下一轮读写。
对于ispLSI1016的时钟输入,可以使用DDS?直接数字频率合成 构造一个可变频率的正弦波产生电路,然后再进行波形变换而形成一个方波脉冲信号。但是为了简单起见,也可使用一个4MHz的晶体和基本门电路搭成一个具有一定频率稳定度的方波产生电路。
前面已经提到过ispLSI1016由编程实现八分频电路、地址计数译码电路、并/串转换电路的功能。其中八分频电路可以看作是一个3位的计数器,它的进位信号就是外部输入时钟的八分频信号;地址计数译码电路也可以看作是一个16位的地址计数器,它的低15位就是作为输出的地址信号,它的最高位B15是做为控制信号来使用的;并/串转换电路可以看作是一个八位的移位寄存器,它的移出信号就是所要产生的数据码流信号。
2.2 系统程序设计
系统程序主要完成以下功能:由微机将符合一定建议数据格式的数据写入RAM中,查询端口的状态并完成相应的操作,结束系统的工作等。系统程序流程图如图4所示。
3 isp编程设计
3.1 在系统编程原理
ispLSI器件的编程是由片内状态机控制的,状态的输入即为进入片内的五个编程接口信号。图5给出了在系统编程电路的典型结构。
图中编程信号来自专门的在系统编程控制电路。编程过程即为把JEDEC形式的熔丝图传送到器件中的过程。ispLSI器件有两种模式:正常工作模式与编程模式。器件的工作模式是由在系统编程使能信号ispEN控制的。ispLSI器件一旦进入编程模式,器件的编程操作就完全受片内isp状态机控制。在五个编程控制信号中,ispEN信号用来使能或取消其他四个编程控制信号。它们是:数据串入信号SDI、模式控制信号MODE、数据串出信号SDO和串行时钟信号SCLK。在SCLK的作用下,来自JEDEC文件的编程信息通过SDI端口串行地移入器件,同时通过SDO端口移出。SCLK同时也驱动片内状态机工作。当器件处于正常工作模式时,4个编程控制信号端口可以用作普通的直通输入端。对ispLSI器件编程有多种方法。其中最简单的是直接把isp编程引脚当作专用的编程端口。用如图5那样的并行编程结构来进行编程。
3.2 设计软件简介
如前所述,isp由编程实现八分频电路、地址计数器电路以及并/串转换电路的功能。在这里对isp编程采用原理图设计法,即先设计出满足上述功能的原理图,然后生成JEDEC形式的熔丝图,再写入isp器件中。
我们使用的绘制原理图的软件为OrCAD System公司的OrCAD/SDT IV。需要注意的是,因为要使用OrCAD Systems公司的WDOWNLD软件包进行对ispLSI1016的编程写入,所以在绘图时要采用库LSC.LIB(Lattice Semiconductor Corporation Library)中的元件。也就是说,要使用LSC库中基本逻辑门和D触发器来绘制出具有上述三种功能的isp编程原理图。
在原理图绘制完毕之后,就可以用OrCAD/SDT IV中的网络表制作功能生成网络表.EDN文件,此时还可使用OrCAD/VST进行数字电路的逻辑模拟。在电路连接网表文件生成以后,就可以使用pDS+ OrCAD Software软件包生成JEDEC形式的熔丝图文件了。有关pDS+ OrCAD Software的资料请参考文献[4]。当具有标准JEDEC格式的熔丝图文件生成以后,就可以使用WDOWNLD软件包(即DOWNLOAD for Windows)对isp器件进行编程写入了。下载电缆线是专用的ispDOWNLOAD CABLE,它的一端是25针的并行接口,另一端是一个8脚的插座。对WDOWNLOAD软件感兴趣的读者请参考相关的资料。
经过上述步骤,pLSI/ispLSI1016就成为一个具有一定功能的逻辑器件了,我们也就可以在系统电路板上使用它了。
总之,美国Lattice 公司将“在系统可编程(isp)”技术应用到高密度可编程器件中,形成既有可编程逻辑器件(PLD)的性能与特点,又有现场可编程逻辑阵列(FPGA)高密度和灵活性的在系统可编程逻辑器件。本设计就是对这种器件进行了一定的开发及应用,设计出一种通用数字信号源。有关isp器件的开发及应用还值得我们作进一步的探索
举报