USB数据的传输是由主机出发,经USB控制芯片转化为8位并行数据,由数据总线传到CPLD的可编程I/O引脚。同样,CPLD数据可以由数据总线传到USB控制芯片,进而转化为USB的数据格式送回主机。CPLD接收USB控制芯片传送来的数据时,对数据进行分析,再对数据进行转码,使其符合IEEE1149。1标准。[9]
2。2 软件设计
CPLD的大部分工作是在电脑上完成的,其大体操作流程可以分为:
设计输入,将所设计的系统或电路以开发软件要求的某种形式表示出来,输入给EDA工具的过程。常用的方法有硬件描述语言(HDL)和原理图输入方法等。
前仿真,是在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。仿真前,要先利用波形编辑器和HDL等建立波形文件和测试向量(即将所关心的输入信号组合成序列),仿真结果将会生成报告文件和输出信号波形,从中便可以观察各个节点信号的变化。[9]
综合优化,所谓综合就是将较高级抽象层次的描述转化成较低层次的描述。综合优化根据目标与要求优化所生成的逻辑连接,使层次设计平面化,供FPGA布局布线软件进行实现。
实现与布局布线,可理解为利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能链接的布线通道进行连线,并产生相应配置文件,实现是将综合生成的逻辑网表配置到具体的FPGA芯片上
时序仿真,也称为后仿真,是指将布局布线的延时信息反标注到设计网表中。
时序转化是我们软件主要需要实现的功能,8位并行数据从USB芯片发送到可编程逻辑器件CPLD期间,软件将前者时序转化为后者时序,为了提升下载速度,我们使用了边界扫描技术。接下来数据从可编程逻辑器件CPLD发送到主机时,软件将筛选出符合IEEE1149。1标准的。[6]论文网
我们可以将CPLD和USB控制芯片之间的数据传输分为两个状态,即接受状态机和发送状态机。接受状态机主要是查询USB-RXF引脚的状态,当检测到其为低时,便能得知上位机已将数据写入到FT245BL中的缓冲区了,接下来产生读控制时序,便能使FT245BL中的缓冲区数据写入CPLD缓冲区。发送状态机主要是将外设产生的数据通过FT245BL和USB总线传送到PC机,外部设备的数据就绪之后,发送置为有效的允许信号,当状态机检测到这一信号是1时,便启动发送操作,首先把外设的缓冲区数据写入CPLD缓冲区,然后生成时序,最后将数据写入FT245BL发送缓冲区。
3 硬件电路设计
3。1 电路器件
3。1。1 USB器件FT245BL
FTDI生产FT245BL是该设计的重要部件。实现USB和并行I/O口之间的协议转换是该器件的主要功能。芯片的功能之一是将主机发送的数据经USB串行总线进行接收,然后使其转换为符合并行I/O口的数据流格式发送给外部设备;还有可以通过并行I/O口将数据转化为USB串行数据格式将外部设备数据传回主机。后面的工作由芯片自动完成转换,不在此论文的涉及范围,并行I/O口与微控制器、现场可编程门阵列或其他外设接口的便捷传输都可以在该芯片上得以运用。将FTDI公司提供的驱动程序安装在PC机上,操作者只要掌握VB、VC编程,就能够实现仿真。
FT245BL包含两个先入先出队列数据缓冲区,其中一个是128Byte的负责接收的缓冲区,还有一个是384Byte的负责发送的缓冲区。USB数据与并行I/O口数据的交换缓冲区就是这两个缓冲区。先入先出队列实现与外界的接口,该器件由8根数据线D0~D7、读写控制线RD#和WR#以及先入先出队列发送缓冲区空标志TXE#和先入先出队列接收缓冲区非空标志RXF#的数据交互来实现先入先出队列实现与外界的接口的数据交互。当前先入先出队列发送缓冲区为空则XE#为低,先入先出队列发送缓冲区是满的有可能是正在存储前一个字节则为高,这个时候就不能向缓冲区中写数据。RXF#为低表示当前先入先出队列的接收缓冲区非空那么RXF#为低。先入先出队列缓冲区中读取数据按顺序写入RD#信号由低到高。当数据送到数据总线时RD#会变低。当不能从FIFO读数据时RXF#为高。[10]