FMC150是什么?
FMC是一种标准的名称,FMC150则是符合FMC标准的四通道ADC/DAC子卡,可以和一些FPGA相连扩展其功能。
该板卡提供两个14位A/D通道和两个16位D/A通道,可由内部时钟源提供或外部提供采样时钟。
Related Documents
- FMC150_user_manual(FMC150用户手册)
- Datasheet CDCE72010
- Datasheet ADS62P49
- Datasheet DAC3283
- Schematics FMC150(FMC150原理图)
如何配置和使用FMC150?
由于毕设必须得用到高速的AD/DA,而高速的AD/DA又通常需要进行一系列配置之后才能使用,又因为自己从来没有配置过加之听说一款叫AD9361的板卡需要配置几千个寄存器才能正常使用,所以刚拿到FMC150的时候心里是有点退缩的,不知如何下手。好在和老师讨论过后发现配置FMC150还是有迹可循的。
首先,作为和Xilinx FPGA配套使用的板卡,那么就能在Xilinx官网上找到相应的链接,或者直接Google也能找到板卡的厂商,厂商一般都会提供对应的用户手册。
因为FMC150是支持ZC706系列开发板的,所以可以放心大胆的开发使用啦。
一开始找到用户手册还是很开心的,但是仔细一看发现用户手册中的内容都是对板卡的大体介绍和描述,对于如何配置只字未提,一盆冷水浇在头上。过了几天在询问过有AD/DA配置经验的学长后才明白,配置板卡一般需要找到用户手册和板卡中需要使用的芯片的用户手册。所以我又看了一遍用户手册,其中确实有提到相关文档!!!
因为CDCE72010作为AD/DA采样时钟的分配者,所以先去看CDCE72010的数据手册并配置。
CDCE72010
数据手册中内容比较多,这里主要关注如何配置芯片寄存器,芯片管脚,以及每个寄存器中各位的作用。原文中提及
All device settings, including output signaling, divider value selection, input selection, and many more, are programmable with the SPI (4-wire Serial Peripheral Interface). The SPI allows individual control of the device settings.
这就要求我们自己去写SPI时序。通过事先在ROM中存好将要送往寄存器中值,再通过SPI时序将ROM中的值写入相应的寄存器。
下面是关于四线SPI每一个信号线的描述
- SPI_CLK是主机(FPGA)向从机(CDCE72010)发送的时钟线。
- SPI_MOSI是主机向从机发送数据的数据线
- SPI_MISO是从机向主机发送数据的数据线
- SPI_LE是片选线
CDCE72010一共有13个寄存器需要配置,每个寄存器有28位,除了要发送数据之外,还必须在每个数据之前加上对应的地址比特(4位)。其中地址比特作为低位先输出。
CDCE72010支持主机通过SPI发出的四个命令:
- Write to RAM(写寄存器)
- Read Command(读寄存器)
- Copy RAM to EEPROM - unlock
- Copy RAM to EEPROM - lock
Warning:每条指令不能连续发,中间得有等待时间
在写寄存器时,在SPI_LE从高电平转换为低电平之后,数据流(Bit0)中的第一个数据位的锁存发生在SPI_CLK的第一个上升沿。数据转换发生在SPI_CLK的下降沿。 SPI_LE的上升沿向CDCE72010发出信号,表明已经发生了流中最后一位的传输(位31)。
在读寄存器时,SPI主机首先发出读取命令以启动从CDCE72010到主机的数据传输,通过将SPI_LE从低电平转换为高电平,CDCE72010可以解析数据字段相应位中指定的地址。SPI_LE拉低时,CDCE72010会在“读取命令”中指定的寄存器中显示数据SPI_MISO。
ROM中的数据:
MEMORY_INITIALIZATION_RADIX=16;
MEMORY_INITIALIZATION_VECTOR=
683C0350
68000021
83840002
68000003
E9800004
68000005
68000006
83400017
68000098
68050CC9
05FC270A
0000040B
0000180C;
如下为其中的一个寄存器,用来产生ADC的时钟。我们可以通过给第13bit至19bit相应的值来设置时钟分频比,通过给第22bit至27bit来设置输出时钟的形式。
最后可以将寄存器中的值读出来或者或者ILA观测相关管脚是否产生相应时钟来检验是否配置成功。
后续会更新关于ADC和DAC的配置,以及合并程序实现想要FMC实现的功能。