基于FPGA的多功能数据选择器设计与实现章军海201022020671[摘要]传统的数字系统设计采用搭积木式的方法来进行设计,缺乏设计的灵活性。
随着可编程逻辑器件(PLD)的出现,传统设计的缺点得以弥补,基于PLD的数字系统设计具有很好的灵活性,便于电路系统的修改与调试。
本文采用自顶向下的层次化设计思想,基于FPGA设计了一种多功能数据选择器,实现了逻辑单元可编程、I/O单元可编程和连线可编程功能,并给出了本设计各个层次的原理图和仿真时序图;本文还基于一定的假设,对本设计的速度和资源占用的性能进行了优化。
[关键词]层次化设计;EDA;自顶向下;最大时延0引言:在现代数字系统的设计中,EDA(电子设计自动化)技术已经成为一种普遍的工具。
基于EDA技术的设计中,通常有两种设计思想,一种是自顶向下的设计思想,一种是自底向上的设计思想[1]。
其中,自顶向下的设计采用层次化设计思想,更加符合人们的思维习惯,也容易使设计者对复杂系统进行合理的划分与不断的优化,因此是目前设计思想的主流。
基于层次化设计思想,实现逻辑单元、I/O单元和连线可编程可以提高资源的利用效率,并且可以简化数字系统的调试过程,便于复杂数字系统的设计[2][3]。
1系统原理图构架设计1.1系统整体设计原理本设计用于实现数据选择器和数据分配器及其复用的I/O端口和连线的可编程却换,提高系统的资源利用效率。
系统顶层原理框图如图1所示,系统拥有两个地址选择端口a0、a1,一个功能选择端口ctr,还有五路I/O复用端口。
其中,地址选择端口用于决定数据选择器的数据输入端和数据分配器的数据输出端;功能选择端口用于切换数据选择器和数据分配器,以及相应的I/O端口和连线;I/O复用端口数据的输入和输出,其功能表如表一所示。
图1顶层模块原理图表一顶层系统功能表根据层次化设计思想,要实现上述功能表中的功能,系统得由数据选择器、数据分配器和端口控制器三部分组成。
其中,数据选择器和数据分配器为功能单元,分别完成相应的数据处理功能,端口控制器完成相应数据端口模式和功能的切换功能。
根据对各个模块的功能要求,可以得到如图2所示的系统框架原理图。
图2 系统框架原理图1.2数据选择器设计原理数据选择器用于控制有效数据的输出,能够通过地址选择线来选定相应的通道作为输出,提高了数据的传输效率。
本设计中的数据选择器采用了层次化设计思想,通过将本设计中优化过的一种自定义逻辑运算模块和与非门组合构成。
由于自定义逻辑运算模块是一种速度快、片上面积小的与非结构模块,该数据选择器形成了与非-与非结构,有运行速度快、驱动能力强且占用片上面积小等优点。
该模块有两个数据端口a1、a0,用于选择相应的通道;还有四个数据端口x0、x1、x2、x3,分别是四个数据输入通道;还有一个输出通道y_select,用于输出选择的数据。
其原理框图如图3所示,将自定义逻辑单元的输出,经过一个四输入的与非门,得到最终的输出信号y_select。
要实现如表二所示的逻辑功能,得用a0、a1的地址选择信息,来选择四个输入中的一个作为输出,以实现数据选择的功能。
其原理图和功能表分别如下图所示:图3 数据选择器原理图1.3数据分配器设计原理数据分配器用于选择数据的传输途径,在信号传输过程中能够通过地址选择线选择传输信道。
本设计的数据分配器的设计与数据选择器的设计思想类似,采用了层次化设计思想,基于自定义的优化后的逻辑运算模块,对逻辑运算模块的信号进行取非运算得到相应的输出。
整个模块采用了与非-非门结构,其传输速度快,驱动能力强,占用资源较其它形式少。
该模块有两个地址选择端口a1、a0,用于选通逻辑运算模块相应的输出;有一个输入端口,用于输入要传输的数据;四个输出端口x_0、x_1、x_2、x_3,作为四路输出通道。
其结构原理图如图4所示,完成如表三所示功能,通过数据线选择正确的通道,完成有效分配功能。
图4 数据分配器原理图1.4端口控制器设计原理端口控制器用于对本系统的功能、I/O 端口和连线进行切换,是本系统实现可编程I/O 单元设计、可编程逻辑单元设计和可编程连线的核心。
本设计的端口控制器采用三态门作为选通开关,利用三态门的特性有效的对I/O 端口进行配置,使不用的端口形成高阻态,以实现I/O 端口的多路复用和输入输出的有效切换。
其具体结构原理图如图5所示。
图5 端口控制器原理图该模块由三态门和非门构成,拥有一个选择端口ctr用于对功能、I/O端口和连线进行选择,是本系统控制的核心;拥有四个单向输入端口x_0、x_1、x_2、x_3,用于将数据分配器的处理结果送到系统输出端口;拥有四个单向输出端口x0、x1、x2、x3,将输入的四路数据分别送到数据选择器的五个输入端口;拥有四个输入输出端口,通过切换来实现数据表四端口控制器功能表1.5逻辑运算模块设计原理逻辑运算模块用于完成本系统的主要逻辑运算,因此是本系统的处理速度和占用片上面积等参数的主要体现,本模块通过被相应的功能模块调用来完成各功能的逻辑运算。
其具体结构原理图如图6所示,该模块有两个数据选择端口a0、a1,用于选通相应的数据通道;拥有四个数据输入端口x0、x1、x2、x3,分别用于传输四路独立的信号;拥有四路输出端口y0、y1、y2、y3,用于输出四路独立的信号。
该模块利用图6所示原理图,完成表五所示的逻辑功能。
表五逻辑运算单元功能表该模块作为本系统主要的逻辑运算单元,其性能的好坏对系统的整体性能有很大影响,本系统中数据选择器和数据分配器都调用了该模块,因此该模块的设计应该将一些性能参数纳入考虑范围。
本系统考虑到逻辑模块的时延和片上面积,前者影响系统的处理速度,后者代表系统资源的利用效率。
电路的单元时间延迟取决于时间常量RC,当输出电阻恒定时,其输出延时取决于电容值C,现在以最小单晶管的电容为单位,假设源漏电容为栅电容的两倍。
则有如图7所示参数模型,其中Tmax代表最大时延,A代表片上占用面积,A=2A=6A=12A=20Tmax=6Tmax=19Tmax=40Tmax=69图7 常用逻辑器件的参数模型根据上述模型,可以计算得到本系统的A=2*2+12*4=52、Tmax=6+40+3*3=55,其参数较其它门电路所构成的该功能模块更好[4]。
2系统仿真与分析2.1整体仿真设计框图对于本系统的时序仿真,可以通过产生相应的激励信号来对系统的功能进行验证,通过系统最终的输出和输入信号的比较来确定系统功能是否得以实现。
本系统的仿真框图如图8 所示,该框图由激励产生模块和系统集成模块组成,激励产生模块为系统产生测试所需的时序(如图9所示),系统接收激励信号,产生相应的输出结果,以测试系统相应的功能。
图8 整体仿真设计框图图9 激励产生模块输出由图9可以看出,当功能控制信号ctr输出为0时,数据输出端xbir_0、xbir_1、xbir_2、xbir_3输出相应的脉冲信号,y_bir被设置为高阻态,系统进入数据选择器功能测试阶段;当功能控制信号ctr输出为1时,数据输出端y_bir输出相应的脉冲信号,xbir_0、xbir_1、xbir_2、xbir_3被设置为高阻态,系统进入数据分配器功能测试阶段。
2.2各模块仿真时序图及其分析2.2.1系统整体仿真时序分析通过在Quartus设置相应的输入信号,对输出信号进行跟踪观察,可以得到如图10所示的仿真时序图。
图10 系统整体时序图由该时序图可以看出,当功能控制信号ctr为1时,系统通过控制a1、a0从xbir_0、xbir_1、xbir_2、xbir_3输入的信号中选择一路从y_bir进行输出,实现了系统的数据选择器的功能;当功能控制信号ctr为0时,系统通过控制a1、a0,选择从xbir_0、xbir_1、xbir_2、xbir_3中的其中一个输出端口输出y_bir端口输入的信号,实现了系统的数据分配器的功能。
该时序完全符合表一所示的系统顶层功能表,证明本系统设计的正确性。
2.2.2数据选择器仿真时序分析在Quartus时序仿真中对数据选择器相应的端口进行设置,跟踪输出信号可以得到如图11所示的仿真时序图。
图11 数据选择器时序图由该时序图可以看出,该模块通过设置a0、a1来选择相应的输入信号从y_select端口进行输出,其时序与表二所示的功能表相符合,进一步验证了该模块的正确性。
在输出中存在一些很小的毛刺现象,是由于a0、a1不是同时发生状态转换,导致模块输出端的输出状态发生迅速的跳变所引起的。
由于毛刺持续的时间很短暂,该现象不会影响该模块的整体性能。
2.2.3数据分配器仿真时序分析在Quartus时序仿真中对数据分配器进行相应的设置,将相应的信号设置在输入端口,跟踪输出信号可以得到如图12所示的仿真时序图。
图12 数据分配器时序图由该模块的时序图可以看出,通过设置a0、a1可以选择x_0、x_1、x_2、x_3四个输出端口之一作为输入端y_in的输出。
该图的时序与表三所示的功能表相对应,图中还可以看出系统延时也比较短,只有5个ns,进一步证明该模块的高传输速度。
2.2.4端口控制器仿真时序分析在Quartus中对图5所示原理图进行时序仿真,设置相应的端口信号,跟踪其输出可以得到如图13所示的仿真时序图。
图13 端口控制器时序图由该模块的仿真时序图可以看出,当功能控制端口为0时,x_0、x_1、x_2、x_3、y_select 端口作为信号输入端,分别由xbir_0、xbir_1、xbir_2、xbir_3、y_bir双向端口输出,x0、x1、x2、x3、y_in被设置为高阻态,实现了数据分配器的I/O端口和连线的设置;当功能控制端口为1时,双向端口xbir_0、xbir_1、xbir_2、xbir_3、y_bir作为信号输入端,分别由x0、x1、x2、x3、y_in端口输出,x_0、x_1、x_2、x_3、y_select被设置为高阻态,实现了数据选择器的I/O端口和连线的设置,该仿真时序与表四所示的功能图完全一致。
2.2.5逻辑运算模块仿真时序分析在Quartus中对图6所示原理图进行时序仿真,设置相应的端口信号,跟踪其输出可以得到如图14所示的仿真时序图。
图14 逻辑运算模块时序图由该模块的时序仿真图可以看出,a1、a0实现了通道的正常选通,该时序与表五所示的功能表相符合。
为观察本系统的时延特性,本系统采用仿真的都为时序仿真,仔细观察时序图可以看出,该模块的该模块只有5ns以内的延时,证明该模块的速度性能很好,因此,系统中的数据选择器和数据分配器都有比较好的速度性能。
3总结本系统实现了多功能数据选择器的功能,完成了对于可编程IO单元、可编程逻辑单元和可编程连线的层次化设计,达到了设计要求。