新闻中心

EEPW首页>EDA/PCB>设计应用> 基于FPGA和PCI的高精度测速板卡的设计与实现

基于FPGA和PCI的高精度测速板卡的设计与实现

作者: 时间:2011-01-24 来源:网络 收藏

2 各个模块VHDL实现
根据图1的总体设计方案,使用VHDL语言设计实现如下几个模块。
2.1 倍频辨向模块
为便于使用VHDL语言描述,对图2的码盘信号作如下分析:
(1)当码盘正转时,在一个周期T内,A,B两相信号共有4次相对变化:00→1O→11→01。这样,根据前一次和当前的信号,就可以判断方向,并产生四倍频脉冲。
(2)同理当码盘反转时,也根据A,B两相信号的4次相对变化:00→01→11→10,可以判断方向,并产生四倍频脉冲信号。
(3)当线路受到干扰或出现故障时,则可能出现其他状态转换过程,此时不产生脉冲。
根据上述分析就可以设计出辨向模块,当判断正转时,把方向输出置‘1’,反向时置‘O’。
2.2 改进M/T法模块
如图3所示可以看出,本部分的VHDL设计分成两个模块:计数器模块与锁存器模块。
其中,计数器模块分为两种:高频时标计数器和反馈脉冲计数器。高频时标计数器在每个高频时标的上升沿都做+1计数,在每个反馈脉冲的上升沿对计数值锁存。反馈脉冲计数器,需要两个输出:反馈脉冲计数值Cm、位置反馈脉冲计数值。其中,Cm的增量值用于速度的计算,所以在每一个反馈脉冲到来时,计数器都+1;的计数值用于位置的计算,所以它是在Cm的基础上考虑了码盘方向得到的计数值,在正转时反馈脉冲计数器+1,反转时-1,当零位脉冲Z有效时,对其置0。然后分别输出Cm,,由此就可以得到反馈脉冲计数器模块。
在每个采样周期的上升沿还要锁存Cm,Ct的增量值和与Ct的差值,由于都做了差分处理,所以这三个锁存器使用双字就能满足设计要求,而锁存器在零位信号Z后不进行差分处理,若采用36 000刻增量式码盘,并进行10 000倍频,位置范围为±720°,那么需要的最大计数值为:
(36 000×10 000×720×2)/360=1 440 000 000
可见,双字锁存器也能满足设计要求。
综上所述,本设计设置了4个双字信号锁存器Cm,,Ct,,同时还需要对其控制输出,所以在从设备控制器中为I/O分配4个双字的地址空间。然后根据总线给出的地址信号_AD[3:2]和数据输出使能信号DATA_EN对这4个双字寄存器寻址输出。
2.3 PCI接口控制器
PCI的时序规则和PCI的总线协议由PCI接口控制器实现,同时它还负责传递地址和数据输出使能信号给模块,实现I/O口的基本读与猝发读数据功能。
从设备控制器包括2个部分:奇偶校验模块和PCI从设备状态机。
2.3.1 奇偶校验模块
PCI的奇偶校验提供了一种机制来决定一件作业。该作业判断主设备是否成功地寻址相应的从设备,且数据是否正确地在它们之间传输。通过该模块完成数据传输过程中PCI_AD和PCI_CBE的偶校验。偶校验的输出信号在地址和数据周期有效,其产生的规则是使偶校验输出、PCI_ CBE、PCI_AD各位的‘1’的个数为偶数。那么采用把PCI_AD与PCI_CBE各位异或的方法,就可以实现偶校验的功能。
2.3.2 PCI从设备状态机
PCI从设备控制器是PCI接口设计的核心模块,按功能来说,它要产生奇偶校验和数据的使能信号,并根据PCI_AD和PCI_CBE产生读地址,完成主从设备的握手信号,并且实现从设备状态机在各个状态之间的转换。
由于本设计只需要完成I/0读操作,本状态机设计配置空间的功能放在了从设备控制器来完成,同时删去了PCI操作中对存储器空间、配置空间的操作,结合PCI总线的传输时序,如图5给出了其基本结构。

h.JPG



评论


相关推荐

技术专区

关闭