新闻中心

EEPW首页 > EDA/PCB > 设计应用 > FPGA在激光测距机电路检测系统中的应用

FPGA在激光测距机电路检测系统中的应用

作者:时间:2009-08-05来源:网络收藏



3.1 SPI通信接口的实现
SPI接口是一个同步、全双工串行接口,最大数据位速率为时钟速率的1/8,只要遵循同一时刻只有一个主机和从机通信的原则,在同一条总线上可以有多个主机和从机。SPI口因接口简洁扩展方便等优良特性,广泛应用于串行存储器(如DataFlash、3线 E 2PROM)、串行外设(如ADC、DAC、LCD控制器、CAN控制器)和外部协处理器中。
在第三方软件 Altera SOPC Builder中可直接定制 SPI接口的 IP核,在本中采用 Verilog HDL来描述实现。 在设计中,MCU作为 SPI通信的主机,的SPI接口作为从机。SPI口有四种不同的数据传输格式的时序,这里通过设置 SPCR寄存器选择CPOL=0、CPHA=0模式,以下是其实现代码:
always @(posedge sck or posedge cs)
begin:chy

本文引用地址://m.amcfsurvey.com/article/191973.htm

integer i;
if(cs) begin data=0;i=0;miso=1”b’Z; end
else begin
if(sck)
begin
data= data1;
data= data+mosi;
miso=(send_data>>(7-i)) 8'h01;
i=i+1;
if(i==8) begin
rev_byte= data;
end end end end


3.2时钟分频的实现
Verilog HDL所描述的所有组合逻辑或时序逻辑电路的功能都是在各自输入时钟的节拍下工作的,而对于不同的功能模块,因其电路精度要求不同对输入时钟的要求也不同,时钟频率越低,对 综合、布局布线的要求也越低,所设计出的电路也越稳定。在本设计中,时钟由外部 100MHz晶振提供,内部模块要用到的时钟有 100MHz、1MHz、 1KHz、10Hz和 1Hz五种,由计数器分频实现,限于篇幅不详述。
3.3命令解释与决策的实现 要完成与 MCU的数据交换,又要指挥各测试模块对指定通道信号的特定参量的测试,还要执行成百上千组时序信号激励和开关量信号激励,任务错综复杂,需要一个对命令的解释和决策执行机制。在具体实现上,首先对 MCU的命令号进行区间划分,决策模块收到从 SPI接口模块的命令后,判断命令的类别,分别针对握手联络命令、复位命令、测试命令(包括通道号、测试指标、时钟输入的选择)、激励发生命令(包括通道号、时序信息)、发送测试结果命令(通过 SPI接口将测试结果发送给MCU)等去触发相应 FPGA内部模块动作。
3.4信号测试的实现

信号测试功能包括对输入信号的脉宽测试、周期测试、特殊类型信号的测试等内容,限于篇幅,下面对比较典型的脉宽测试进行阐述。例如对于负脉冲信号,测试其脉宽即是测量其在某时段低电平的维持时间,可以通过计算时标信号的个数来实现。设时标信号周期为Ts,时标个数为N,则脉宽为W=Ts*N,其主要部分是计数功能,并将得到的数予以锁存。计数模块与锁存模块由控制信号发生模块控制,其逻辑框图如图 3所示。

其中 CLKX为被测脉冲,CLK为时标信号,RST为系统复位信号,WIDTH为脉宽计算结果。图中有三个控制信号:计数允许信号CNT_EN、计数清零信号 CNT_CLR和锁存信号LOAD,分别控制计数模块和锁存模块。
在实际测试中发现,由于外界干扰的影响,在被测信号出现正常脉冲前会出现多个窄带
干扰脉冲,这个脉冲的短暂低电平会让计数模块产生误动作,从而得出错误的计算结果。本文采取前级窄带脉冲过滤的方法,有效地消除了外界的干扰。其具体做法是外加一个计数模块判断输入信号的低电平时间是否超过一定门限,超过则触发其后的控制信号发生模块动作,否则不触发。 值得注意的是在后面的计数模块里要加上前级的门限值。
3.5激励信号的实现
检测系统所要产生的激励信号包括时序信号和开关量信号,时序信号的产生相对复杂,其实现机理如图 4所示。其中,START是启动信号,控制时序产生模块的启动与停止;EX_SYNC是外同步信号,在某些场合下,时序信号的产生需要与外界信号的同步,此信号用于控制信号发生的时基;计数模块负责在 CNT_EN和 CNT_CLR等控制信号下计数,实时触发相应的时序序列输出;LOCK信号用于锁定末态时序序列的状态。



评论


相关推荐

技术专区

关闭