基于fpga的仿效adc的方法及装置制造方法
【专利摘要】本发明公开了一种基于FPGA的通用的仿效ADC的方法及装置。其中,本发明提供的方法包括:基于FPGA,采用VHDL硬件描述语言编写RTL级代码进行模块化设计,产生ADC的数字输出端的信号及其时序,对ADC进行仿效。本发明提供的装置,包括:用于对仿效ADC的配置寄存器进行读写操作的串行外设接口模块;用于根据仿效ADC的测试模式及参数,产生并输出测试模式的输出数据的测试模式模块;用于模拟ADC的数字输出端的信号的特定时序的时序模拟模块。该装置能模仿ADC的实际工作情况,能和真实系统直接相连,为数字类处理或控制系统提供早期、离线的模拟环境,为项目的开发以及测试提供方便,从而有效减少了项目开发时间。
【专利说明】基于FPGA的仿效ADC的方法及装置
【技术领域】
[0001]本发明属于图像和音频处理、测量【技术领域】,尤其涉及一种基于FPGA的仿效ADC的方法及装置。
【背景技术】
[0002]ADC作为模拟信号到数字信号的转换桥梁,在图像和音频处理、测量等领域有着非常重要的作用,ADC的设计和建模成为了近年来的研究热点。
[0003]现行的ADC建模方法多数是基于MATLAB/Simulink平台的行为级建模,此外,还有使用Verilog-A进行行为级建模,以及采用运放宏模型代替ADC中晶体管级的放大电路进行建模。这些建模方法的主要目的是提高仿真效率,得出的参数可以有效地指导实际电路的设计,但这些方法存在和真实系统相连困难,难以仿真实际时序等缺点。
[0004]由于高精度ADC开发板的设计难度大,往往会滞后于数字处理或控制板的开发进度,从而延长了整个系统设计的开发及联合调试时间。
【发明内容】
[0005]本发明的目的在于提供一种基于FPGA的仿效ADC的方法及装置,旨在解决现有仿效ADC的方法与真实系统连接困难、难以仿真实际时序的问题。
[0006]本发明是这样实现的,由于在含有ADC芯片的系统设计中,ADC的数字输出端直接与数字处理或控制电路相连,因此,ADC的数字输出端的信号及其时序和数字处理或控制电路有直接关系。所以,直接针对ADC的数字输出端,产生ADC的数字输出端的信号及其时序,就可以完成对数字处理或者控制电路的前级ADC的仿效。基于以上思路,本发明提出一种基于FPGA的仿效ADC的方法,包括以下具体步骤:基于FPGA,采用VHDL硬件描述语言编写RTL级代码进行模块化设计,对ADC的部分功能进行仿效,所述ADC的部分功能包括:通过串行外设接口(SPI接口)对ADC的配置寄存器进行读写操作,通过配置寄存器的值对ADC的测试模式及参数进行调整,ADC的数字输出端的输出信号具有特定时序。
[0007]优选地,所述测试模式及参数包括:固定数模式及其对应参数,水平渐变数模式及其对应参数,垂直渐变数模式及其对应参数,条纹数模式及其对应参数。
[0008]优选地,所述固定数模式为:ADC固定输出η位全O至η位全I之间的任何一个数值,其中,η为ADC的转换精度;所述固定数模式的对应参数为ADC固定输出的数值。
[0009]优选地,所述水平渐变数模式为:ADC循环输出I行数据,I行数据分为若干组,每组中的数据相同,这些组按照组中数据的大小由小到大排列;所述水平渐变数模式的对应参数为:1行的数据个数和第I组的数据大小,每组包含的数据个数,以及相邻两组数据大小之差。
[0010]优选地,所述垂直渐变模式为:ADC循环输出I页数据,I页数据横向分为若干组,每组数据分为若干行,每组中的数据相同,这些组按照组中数据的大小由小到大排列;所述垂直渐变模式的对应参数为:每组包含的行数,I行的数据个数,每组数据的大小,第I组的数据大小,以及相邻两组数据大小之差。
[0011]优选地,所述条纹数模式及对应参数为:ADC循环输出I行数据,I行数据分为若干组,I行中有大小不同的2种数据,每组含I种数据,相邻两组数据不同,这些组交替排列;所述条纹数模式的对应参数为:1行的数据个数和2种数据的大小,每组包含的数据个数。
[0012]优选地,所述ADC的数字输出端的输出信号所具有特定时序:
[0013]输出模数转换后的数据或者测试模式输出的数据相对于采样时钟有固定延迟;
[0014]模数转换后的数据或者测试模式输出的数据相对于后续电路接收数据所用的时钟满足建立时间关系。
[0015]本发明进一步提供了一种基于FPGA的仿效ADC的装置,包括:
[0016]串行外设接口模块,用于对仿效ADC的配置寄存器进行读写操作,所述仿效ADC为权利要求1中所述采用VHDL硬件描述语言编写RTL级代码完成的总体模块化设计;
[0017]测试模式模块,用于根据仿效ADC的测试模式及参数,产生并输出测试模式的输出数据,所述测试模式及参数包括固定数模式及对应参数、水平渐变数模式及对应参数、垂直渐变数模式及对应参数、条纹数模式对应参数,所述测试模式的输出数据为ADC在不同的测试模式下产生的不同数据输出;
[0018]时序模拟模块,用于模拟ADC的数字输出端的信号的特定时序。
[0019]优选地,所述特定时序包括:
[0020]输出模数转换后的数据或者测试模式输出的数据相对于采样时钟有固定延迟;
[0021]模数转换后的数据或者测试模式输出的数据相对于后续电路接收数据所用的时钟满足建立时间关系。
[0022]优选地,所述测试模式及参数包括:固定数模式及其对应参数,水平渐变数模式及其对应参数,垂直渐变数模式及其对应参数,条纹数模式及其对应参数。
[0023]本发明提出的基于FPGA的仿效ADC能直接与真实系统相连,为真实系统提供开发及测试环境,所述仿效ADC为所述采用VHDL硬件描述语言编写RTL级代码完成的总体模块化设计,所述真实系统包括与ADC相连的数字处理或数字控制系统。本发明的方法模仿ADC的实际工作情况,并且能和真实系统直接相连,为数字类处理或控制系统提供早期、离线的模拟环境,为项目的开发以及测试提供方便,从而有效减少了项目开发时间。
[0024]在此基础上,本发明进一步提供了一种与上述FPGA的仿效ADC的方法对应的FPGA的仿效ADC的装置。
【专利附图】
【附图说明】
[0025]图1为基于FPGA的仿效ADC的方法的总体框图;
[0026]图2为目标系统;
[0027]图3为仿效系统;
[0028]图4为仿效LM98640的总体设计框图;
[0029]图5为SPI配置接口模块设计框图;
[0030]图6为测试模式模块的设计框图;
[0031]图7为数据产生模块的状态转移图;
[0032]图8为LM98640的输出时序;[0033]图9为仿效LM98640设计的输出时序;
[0034]图10为条纹模式的输出数据合成图像。
【具体实施方式】
[0035]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0036]在本发明实施例中,一种基于FPGA的仿效ADC的方法,包括以下具体步骤:基于FPGA的数字电路设计方法,采用VHDL硬件描述语言编写RTL级代码进行模块化设计,对ADC的部分功能进行仿效,所述部分功能包括:通过串行外设接口对ADC的配置寄存器进行读写操作的功能;通过配置寄存器的值对ADC的测试模式及参数进行调整的功能;ADC的数字输出端的信号具有特定时序的功能。
[0037]在本发明实施例中,所述测试模式及参数包括:固定数模式及其对应参数,水平渐变数模式及其对应参数,垂直渐变数模式及其对应参数,条纹数模式及其对应参数。其中,
[0038]固定数模式为:ADC固定输出η位全O至η位全I之间的任何一个数值,其中,η为ADC的转换精度;所述固定数模式的对应参数为ADC固定输出的数值。
[0039]水平渐变数模式为:ADC循环输出I行数据,I行数据分为若干组,每组中的数据相同,这些组按照组中数据的大小由小到大排列;所述水平渐变数模式的对应参数为:1行的数据个数和第I组的数据大小,每组包含的数据个数,以及相邻两组数据大小之差。
[0040]垂直渐变模式为:ADC循环输出I页数据,I页数据横向分为若干组,每组数据分为若干行,每组中的数据相同,这些组按照组中数据的大小由小到大排列;所述垂直渐变模式的对应参数为:每组包含的行数,I行的数据个数,每组数据的大小,第I组的数据大小,以及相邻两组数据大小之差。
[0041]所述条纹数模式及对应参数为:ADC循环输出I行数据,I行数据分为若干组,I行中有大小不同的2种数据,每组含I种数据,相邻两组数据不同,这些组交替排列;所述条纹数模式的对应参数为:1行的数据个数和2种数据的大小,每组包含的数据个数。
[0042]ADC的数字输出端的信号的特定时序为:输出模数转换后的数据或者测试模式输出的数据相对于采样时钟有固定延迟;模数转换后的数据或者测试模式输出的数据相对于后续电路接收数据所用的时钟满足建立时间关系。
[0043]本发明进一步的提供了基于FPGA的仿效ADC的装置,包括:串行外设接口模块,用于通过串行外设接口对仿效ADC的配置寄存器进行读写操作;
[0044]测试模式模块,用于根据仿效ADC的测试模式及参数,产生并输出测试模式的输出数据,所述测试模式的输出数据为ADC在不同的测试模式下产生的不同数据输出;
[0045]时序模拟模块,用于模拟ADC的数字输出端的信号的输出时序。
[0046]具体的,在本发明实施例中,如图1所示,该方法模仿ADC的实际工作情况,仿效ADC能直接与真实系统相连,为真实系统提供开发及测试环境,所述仿效ADC为所述采用VHDL硬件描述语言编写RTL级代码完成的总体模块化设计,所述真实系统包括与ADC相连的数字处理或数字控制系统。
[0047]更具体的,在本发明实施例中,以一个含有LM98640(—款高精度ADC芯片的型号)和数字处理电路的图像处理系统为例,结合附图,对发明的具体技术方案做进一步的说明。
[0048]在图2所示的目标系统中,LM98640转换后的数字图像信号输出到数字处理FPGA,数字处理FPGA将数字图像信号进行合成,经过Camera link协议转化后输出到图像采集卡,在计算机CamExpert工具得到合成图像。
[0049]利用仿效ADC方法,使用仿效LM98640的FPGA代替实际的LM98640开发板,如图3所示的仿效系统。
[0050]仿效LM98640的总体设计框图如图4所示,分为3个模块:时钟模拟模块I (PLL_ADV)通过产生特定频率和相位的一组时钟(发送数据所用时钟DATACLK1、DATACLK2,像元时钟INCLK)来对LM98640的输出时序进行模拟,同时时钟模拟模块I (PLL_ADV)产生接收数据所用时钟TXCLK ;串行外设接口模块3完成对LM98640配置寄存器的读写(SCLK、SEN、SDI,SDO为标准SPI接口信号);串行外设接口模块3通过信号(Config_En、Config_Addr、Config_Data)将配置寄存器的值传递给LM98640的测试模式模块2,LM98640的测试模式模块2产生相应的测试模式数据,将2个通道的测试模式数据转换成4路的LVDS输出(图4中TX0UT0-TX0UT3),同时产生帧信号TXFRM。差分输出通过使用FPGA中差分输出缓冲实现。
[0051]仿效LM98640的串行外设接口模块3设计框图如图5所示,串行外设接口模块3工作过程如下:在串并转换模块31中,通过SCLK、SEN、SDI这三个SPI接口信号接收数据,并进行串并转换,将结果DATAIN输出到读/写控制模块32,读/写控制模块32根据地址总线信号WRITEADDR、READADDR找到对应地址,对双端口 RAM模块33通过数据总线信号WRITEDATA、READDATA写入或读出数据,同时将地址信号WRITE_ADC_ADDR和数据信号WRITE_ADC_DATA送给仿效LM98640的测试模式模块2,然后将双端口 RAM模块34读出的数据DATA0UT送到并串转换模块33,用于产生串行读出数据SDO。双端口 RAM模块34存储着LM98640的配置寄存器中的数据,地址与LM98640配置寄存器一一映射。
[0052]仿效LM98640的测试模式模块2的设计框图如图6所示,主要由3个模块构成:
[0053]测试模式数据产生模块21:该模块在Config_En有效时,读入配置寄存器的地址信号Config_Addr及对应数据信号Config_Data的值,产生相应模式的2个通道图像数据信号Dataoutl和Dataout2,以及写使能信号Data_Enl和Data_En2,分别送到2个FIFO中。
[0054]测试模式数据产生模块21的状态转移图如图7所示。设计采用主-分状态机控制的思想,主状态机用于检测、存储配置地址和数据,启动不同的分状态机。
[0055]主状态机:用于产生不同测试模式的输出数据。其中,所述测试模式及参数包括:固定数模式及其对应参数,水平渐变数模式及其对应参数,垂直渐变数模式及其对应参数,条纹数模式及其对应参数。固定数模式为:ADC固定输出η位全O至η位全I之间的任何一个数值,其中,η为ADC的转换精度;所述固定数模式的对应参数为ADC固定输出的数值。水平渐变数模式为=ADC循环输出I行数据,I行数据分为若干组,每组中的数据相同,这些组按照组中数据的大小由小到大排列;所述水平渐变数模式的对应参数为:1行的数据个数和第I组的数据大小,每组包含的数据个数,以及相邻两组数据大小之差。垂直渐变模式为:ADC循环输出I页数据,I页数据横向分为若干组,每组数据分为若干行,每组中的数据相同,这些组按照组中数据的大小由小到大排列;所述垂直渐变模式的对应参数为:每组包含的行数,I行的数据个数,每组数据的大小,第I组的数据大小,以及相邻两组数据大小之差。所述条纹数模式及对应参数为=ADC循环输出I行数据,I行数据分为若干组,I行中有大小不同的2种数据,每组含I种数据,相邻两组数据不同,这些组交替排列;所述条纹数模式的对应参数为:1行的数据个数和2种数据的大小,每组包含的数据个数。
[0056]主状态机处于空闲状态时,对配置寄存器接收到的配置命令进行检测(将I组配置寄存器地址及数据称为I条命令),当检测到测试模式配置开始命令,进入缓存配置数据状态,这些数据包含测试模式及参数。此后,再次进入检测状态。当检测到生成测试模式开始命令时,进入生成测试模式数据状态,启动分状态机。
[0057]分状态机:4个分状态机分别控制4种模式的数据产生。在固定数模式中,可以产生0000?3FFF (十六进制)的固定数,具体数值依赖于配置寄存器的值。在水平渐变模式中,可以产生起始值,渐进宽度,渐进长度都可调的水平渐变的图像数据。在垂直渐变模式中,产生垂直渐变的图像数据。在条纹模式中,产生亮值,暗值,及条纹宽度都可调整的明暗条纹。检测到结束指令后,进入空闲状态。
[0058]FIFO模块22:包括2个FIFO,用于缓存2个通道的图像数据。FIFO写时钟为像元时钟INCLK,读时钟分别为CLK_P1和CLK_P2.[0059]4路LVDS输出模块23:在写使能信号Read_Enl和Read_En2有效时,将2个FIFO中的2个通道的图像数据FIF01_Data和FIF02_Data读出,转换成4路LVDS串行输出TX0UT1-TX0UT4,同时产生差分的TXFRM信号。
[0060]仿效LM98640的输出时序如图8所示,其中,时序图中INCLK为LM98640的输入像元时钟。TXFRM为巾贞信号,标志I个像元数据传输的开始,同时标志着奇像元/偶像元。TX0UT0-TX0UT3为4路串行输出数据,DB表示一个14位宽度的信号,DB13-DB0分别表示由高到低的14位信号。TXCLK为接收数据一方使用的采样时钟。tDOD为输出数据和像元时钟的延迟,tQSR为输出数据相对于TXCLK需要满足的建立时间。
[0061]LM98640输出时序的模拟是借助于在ISE开发环境中调用锁相环(PLL) IP核产生一组不同频率及相位的时钟来实现的。模拟LM98640时序需要用到4个时钟,像元时钟INCLK,2个输出数据时钟DATACLK1和DATACLK2 (分别用于2个通道的图像数据输出),以及TXCLK。INCLK频率不同时,对应不同的tDOD和tQSR(具体值参照芯片手册),可以方便的通过配置PLL的M、D、0值以及P (相位)值产生一组满足tDOD和tQSR的值的时钟。PLL配置具体方法参见Xilinx Virtex_5FPGA User Guide,在此不赞述。
[0062]验证结果与分析:
[0063]将仿效LM98640总体设计在图3仿效系统中进行验证,使用ISE中Chipscope逻辑分析仪工具抓取LM98640测试模式的固定数模式的输出波形。
[0064]图9中前两个像元为开始像元(暗像元),后面固定输出图像数据3FFF。INCLK,TXFRM, TXOUT, TXCLK的时序关系与图8完全一致,达到仿效目标。
[0065]在图3仿效系统中,通过SPI接口将仿效LM98640配置成测试模式中的条纹模式。仿效LM98640的条纹模式的输出数据进入数据处理FPGA的图像合成模块,而后通过Cameralink接口进入图像采集卡,在PC机CamExpert工具中得到合成图像如图9所示。
[0066]图10为2片仿效LM98640(每片2个通道)工作在条纹模式的输出数据合成的图像。输出亮值为3FFF,暗值为O。每个通道产生8个条纹,共产生32个明暗条纹(条纹数量可以通过配置寄存器进行控制)。I行图像由起始的辅助数据像元加上2片仿效LM98640的4个通道输出的像元组成。
[0067]结果表明,仿效LM98640设计在含LM98640的图像处理系统中真实模拟了工作在测试模式的LM98640,达到预期仿效目的。
[0068]相比与现有技术的缺点和不足,本发明具有以下有益效果:
[0069](I)本发明采用了 FPGA的系统结构和数字电路设计方法,具有编程的灵活性,同时该方法具有通用性,是一种通用的仿效ADC的方法。
[0070](2)使用本发明提出的仿效ADC的方法完成的仿效ADC设计能直接与数字处理或者控制系统相连,为后续数字处理或者控制系统提供了真实的开发及测试环境,能有效减少整个项目开发及测试的时间。
[0071](3)本发明具有系统软件开发成本低、周期短、便于维护和功能变更。熟悉FPGA数字电路设计方法的人员都能完成该方法的实现。
[0072]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种基于FPGA的仿效ADC的方法,其特征在于包括以下具体步骤: 基于FPGA,采用VHDL硬件描述语言编写RTL级代码进行模块化设计,对ADC的部分功能进行仿效,所述ADC的部分功能包括:通过串行外设接口对ADC的配置寄存器进行读写操作,通过配置寄存器的值对ADC的测试模式及参数进行调整,ADC的数字输出端的输出信号具有特定时序。
2.如权利要求1所述的基于FPGA的仿效ADC的方法,其特征在于,所述测试模式及参数包括:固定数模式及其对应参数,水平渐变数模式及其对应参数,垂直渐变数模式及其对应参数,条纹数模式及其对应参数。
3.如权利要求2所述的基于FPGA的仿效ADC的方法,其特征在于,所述固定数模式为:ADC固定输出η位全O至η位全I之间的任何一个数值,其中,η为ADC的转换精度;所述固定数模式的对应参数为ADC固定输出的数值。
4.根据权利要求3所述的基于FPGA的仿效ADC的方法,其特征在于,所述水平渐变数模式为=ADC循环输出I行数据,I行数据分为若干组,每组中的数据相同,这些组按照组中数据的大小由小到大排列;所述水平渐变数模式的对应参数为:1行的数据个数和第I组的数据大小,每组包含的数据个数,以及相邻两组数据大小之差。
5.如权利要求4所述的基于FPGA的仿效ADC的方法,其特征在于,所述垂直渐变模式为:ADC循环输出I页数据,I页数据横向分为若干组,每组数据分为若干行,每组中的数据相同,这些组按照组中数据的大小由小到大排列;所述垂直渐变模式的对应参数为:每组包含的行数,I行的数据个数,每组数据的大小,第I组的数据大小,以及相邻两组数据大小之差。
6.如权利要求5所述的基于FPGA的仿效ADC的方法,其特征在于,所述条纹数模式及对应参数为=ADC循环输出I`行数据,I行数据分为若干组,I行中有大小不同的2种数据,每组含I种数据,相邻两组数据不同,这些组交替排列;所述条纹数模式的对应参数为:1行的数据个数和2种数据的大小,每组包含的数据个数。
7.如权利要求6所述的基于FPGA的仿效ADC的方法,其特征在于,所述ADC的数字输出端的输出信号所具有特定时序包括: 输出模数转换后的数据或者测试模式输出的数据相对于采样时钟有固定延迟; 模数转换后的数据或者测试模式输出的数据相对于后续电路接收数据所用的时钟满足建立时间关系。
8.一种基于FPGA的仿效ADC的装置,其特征在于,包括: 串行外设接口模块,用于对仿效ADC的配置寄存器进行读写操作,所述仿效ADC为权利要求I中所述采用VHDL硬件描述语言编写RTL级代码完成的总体模块化设计; 测试模式模块,用于根据仿效ADC的测试模式及参数,产生并输出测试模式的输出数据,所述测试模式及参数包括固定数模式及对应参数、水平渐变数模式及对应参数、垂直渐变数模式及对应参数、条纹数模式对应参数,所述测试模式的输出数据为ADC在不同的测试模式下产生的不同数据输出; 时序模拟模块,用于模拟ADC的数字输出端的信号的特定时序。
9.根据权利要求8所述的基于FPGA的仿效ADC的装置,其特征在于,所述特定时序包括:输出模数转换后的数据或者测试模式输出的数据相对于采样时钟有固定延迟; 模数转换后的数据或者测试模式输出的数据相对于后续电路接收数据所用的时钟满足建立时间关系。
10.如权利要求8所述的基于FPGA的仿效ADC的装置,其特征在于,所述测试模式及参数包括:固定数模式及其对应参数,水平渐变数模式及其对应参数,垂直渐变数模式及其对应参数,条纹数模式及其对应 参数。
【文档编号】G06F17/50GK103699726SQ201310687989
【公开日】2014年4月2日 申请日期:2013年12月17日 优先权日:2013年12月17日
【发明者】王忆文, 王龙, 李辉, 李平, 许芮铭 申请人:电子科技大学