图6 FSM功能测试仿真图
结果显示当控制信号A=00时,out输出为0000;当A=01时,wri=0时输出为0001,wri=1时输出为0100;当A=10时,wri=0时输出为0010,wri=1时输出为0100;当A=11时,wri=0时输出为0011,wri=1时输出为0100。FSM控制产生的是地址,相对应的ROM中存放着方式控制字和计数初值。仿真结果与测试过程状态转移图相同。
4 硬件验证
以FPGA为核心的该型检测系统FPGA部分设计如图7所示。
图7 FPGA顶层模块图
控制信号经过FSM产生相应的地址信号,该地址读取ROM中存储的测试向量并送到被测芯片的相应管脚,施加激励信号。其中ROM用来存放三种不同芯片的测试向量,通过FSM产生不同的地址,读取ROM中的测试向量,这样值需要改变ROM中的测试向量就可以完成同类芯片不同功能的测试,这样设计的目的主要是增加了方案的通用性和易修改性。激励信号产生电路主要是为被测芯片提供不同的时钟信号,仅需要改变锁相环和计数器的初值即可。图8为该FPGA顶层模块功能仿真图。
图8 FPGA功能仿真图
通过管脚分配和编译,将编译结果下载到FPGA上进行验证,向Cµ8254施加激励信号,相应的响应结果如图9所示。
a A=11(方式2)
b A=01(方式1)
c A=10(方式0)
图9 实验结果
试验中clk信号为4M,图a表示A=11时,生成的测试向量为2844和2148。含义为通道0工作于方式2(速率波发生器)下计数初值为100时响应波形。图b表示A=01时,生成的测试向量为2834和2148。含义为通道0工作于方式1(可重触发单稳)下计数初值为100时响应波形。图c表示A=01时,生成的测试向量为2832和2148,含义为通道0工作于方式0(计数结束中断)下计数初值为100时响应波形。实验结果均和理论结果相同。
5 小结
本文提供了一种基于FSM的可编程集成芯片的功能测试方案,该方案以FPGA为核心,设计具有灵活、修改方便、设计周期短和易于实现等优点。引入有限状态机的设计,解决了芯片测试对时序的要求,并通过了硬件验证,实验证明了该方案是可行的,有较高的实用价值。
参考文献:
[1]华清远见嵌入式培训培训中心.FPGA应用开发入门与典型实例[M].北京:人民邮电出版社,2008.6:1-9.
[2] 赵权,刘翠玲.基于FPGA的通用异步收发机的设计[J].北京工商大学学报,2008,26(1):53-56.
[3]王鹏,郭忠文.基于Verilog HDL的高速可综合FSM设计[J].计算机工程与设计,2006,27(11):2017-2019.
[4]刘波.精通Verilog HDL语言编程[M].北京:电子工业出版社.2007.5.
[5]陈勇.有限状态机的建模与优化设计[J].重庆工学院学报,2007,21(5):55-58.
[6]孙敬国,刘庆华.基于FPGA的多通道语音通信控制器的设计[J].微计算机信息,2009,25(8-2):148-150.
[7]逢兴.计算机硬件技术及应用基础[M].湖南长沙:国防科技大学出版社.2001.1