显示测试图形在线时钟更新方法 【技术领域】
本发明是一种用于显示测试图形的在线时钟更新方法,属显示测试技术领域。
背景技术
不同分辨率的显示器显示测试图形时需要更新时钟信号。目前时钟更新的控制方法主要是离线更新方法。它的主要缺点如下:
1.更新时钟之前先调用专门的时钟编成软件计算时钟频率,根据计算结果将时钟文件保存在计算机PC的预设目录下,因而获得时钟数据非常繁琐。
2.传输时钟数据时必须应用分立于测量主控界面的时钟数据传输界面,这导致低效率数据传输状态下的非连续时钟更新。
3.时钟数据传输时必须采用PC并口LPT到集成电路两线通讯总线I2C的转换接口板,这使得不配备LPT的笔记本电脑无法控制时钟更新。
【发明内容】
技术问题:本发明的目的是提供一种基于计算机通用串口总线(USB)通讯的显示测试图形在线时钟更新方法。它以上位机(PC)和下位机(USB模块、现场可编程门阵列FPGA主控、时钟模块)之间的数据传送,完成时钟更新过程中的通道选择、时钟设定、时钟计算、方案选择、数据传输、数据读写等控制功能。
技术方案:本发明的显示测试图形在线时钟更新方法分为上位机(PC)控制流程和下位机(USB模块、FPGA主控、时钟模块)运行流程。该更新方法由上位机的控制流程和下位机的运行流程相连组成。上位机控制输出通道选择、时钟频率设定、时钟频率计算、时钟方案选择、时钟数据发送、时钟数据接收;下位机运行接收时钟数据、以I2C总线时序向时钟芯片写入或从时钟芯片读出时钟数据、发送时钟数据以供校验。
上位机的控制流程包括频率计算、方案选择、数据发送和数据接收,其步骤执行如下:
100).参考频率与输出频率:a.在参考频率编辑框中输入参考频率;b.在频率通道编辑框CLK_A、CLK_B、CLK_C中输入设定输出频率。
101).由式fCLK′=fREF(NFNR)(1NP)]]>计算输出频率,其中:f′CLK为计算输出频率,fREF为参考频率、NF为反馈分频系数、NR为参考分频系数、NP为二次分频系数。
102).NF取值范围是1~2047,其中不能取值10、11、12、13、14、15、19、20、21、22、23、28、29、30、31、37、38、39、46、47、55,NR取值范围是1~255,NP取值是1、2、3、4、5、6、8、9、10、12、15、16、18、20、25、50,设定NF、NR,在NP取值范围内计算f′CLK,再设定NF,在NR、NP取值范围内计算f′CLK,最后在NF、NR、NP取值范围内计算f′CLK,每计算一次f′CLK,f′CLK与设定输出频率fCLK比较一次,如绝对误差小于0.001,进入解决方案列表。
103).在解决方案列表中任选一个方案,发送数据编辑框StrTXData中生成符合这一方案的16个字节时钟数据。
104).在线编程启动,StrTXData中的时钟数据下传至下位机的FPGA,接收数据编辑框StrRXData中立刻显示被下传的时钟数据以供校验。
105).发送“FFH”至FPGA的接收/发送模块module FT245BM,发送每个数据之前的时钟更新校验标志。
106).发送“40H”至module FT245BM,module FT245BM置时钟芯片的EEPROM地址。
107).发送“01H”和16个字节时钟数据至module FT245BM,即将发送16个字节时钟数据、发送16个字节时钟数据至module FT245BM数据缓存区。
108).发送“08H”至module FT245BM,module FT245BM的复位输出reset置“0”,禁止FPGA的写入/读出模块module FS6370启动。
109).发送“02H”和寄存器地址至module FT245BM,即将发送寄存器地址、发送寄存器地址、预置module FT245BM读控制输出rd为“1”和写控制输出wr为“0”。
110).发送“04H”至module FT245BM,module FT245BM的wr置“1”和rd置“0”、提取module FT245BM数据缓存区的时钟数据。
111).发送“10H”至module FT245BM,reset置“1”,启动module FS6370。
112).重复步骤108).至111).十六次,16个字节时钟数据由module FS6370写入时钟芯片的EEPROM。
113).发送“80H”至module FT245BM,module FT245BM置时钟芯片的器件地址。
114).重复步骤107).,再重复步骤108).至111).十六次,16个字节时钟数据由module FS6370直接写入时钟芯片的控制寄存器。
115).重复步骤106).。
116).重复步骤108).、109).、111).和发送“00H”至module FT245BM十六次,module FS6370从时钟芯片的EEPROM中读出16个字节时钟数据后经moduleFT245BM上传至StrRXData。
117).运行模式切换:a.重复步骤108).;b.发送“20H”至module FT245BM,rd、wr置“0”,module FS6370的模式控制输出mode由“0”变为“1”;c.重复步骤111).,module FS6370从编程模式变为运行模式。
下位机运行流程包括数据接收、数据发送、数据写入和数据读出,其步骤执行如下:
200).USB模块的接收信号输出RXF为“0”,module FT245BM的输入控制USB_RXF为“0”,module FT245BM的输出控制USB_RD为“0”,USB模块的双向数据D[7..0]已准备好,module FT245BM的双向数据USB_DATA[7..0]接收数据。
201).USB模块的发送信号输出TXE为“0”,module FT245BM的输入控制USB_TXE为“0”,module FT245BM的输出控制USB_WR为“1”,module FT245BM的双向数据USB_DATA[7..0]已准备好,USB模块的双向数据D[7..0]上传数据。
202).module FT245BM接收/发送数据:a.根据步骤105).,校验开始标志;b.根据步骤106).,置EEPROM地址;c.根据步骤107).,16个字节时钟数据进入数据缓存区;d.根据步骤108).,禁止module FS6370启动;e.根据步骤109).,接收寄存器地址、预置rd为“1”和wr为“0”;f.根据步骤110).,提取时钟数据至moduleFT245BM数据输出rdata[7..0]、module FT245BM的wr置“1”和rd置“0”;g.根据步骤111).,启动module FS6370;h.根据步骤112).,16个字节时钟数据由moduleFS6370写入时钟芯片的EEPROM;i.根据步骤113).,置器件地址;j.根据步骤114).,16个字节时钟数据由module FS6370直接写入时钟芯片的控制寄存器;k.根据步骤115).,置EEPROM地址;1.根据步骤116).,EEPROM的16个字节时钟数据上传至StrRXData;m.根据步骤117).,module FS6370切换模式。
203).module FS6370写入数据:a.根据步骤202).f.,module FS6370的写控制输入wr为“1”和读控制输入rd为“0”,module FS6370是写数据;b.module FS6370以I2C总线时序开始传输,串行时钟scl为“1”时串行数据sda由“1”变“0”;c.moduleFT245BM的器件地址输出raddr[7..0]送EEPROM或器件地址及写数据位至moduleFS6370的器件地址输入raddr[7..0];d.module FS6370锁存它的raddr[7..0]地址及写数据位后经sda写入时钟芯片;e.module FT245BM的寄存器地址输出addr[7..0]送寄存器地址至module FS6370的寄存器地址输入addr[7..0];f.module FS6370锁存它的addr[7..0]地址后经sda写入时钟芯片;g.module FT245B的数据输出rdata[7..0]送时钟数据至module FS6370的数据输入data[7..0];h.module FS6370锁存时钟数据后经sda写入时钟芯片;i.module FS6370以I2C总线时序结束传输,scl为“1”时sda由“0”变“1”。
204).module FS6370读出数据:a.根据步骤202).e.,module FS6370的rd为“1”和wr为“0”,module FS6370是读数据;b.重复步骤203).b.;c.module FT245BM的raddr[7..0]送EEPROM地址及写数据位至module FS6370的raddr[7..0];d.moduleFS6370锁存它的raddr[7..0]地址及写数据位后经sda写入时钟芯片;e.重复步骤203).e.、f.;f.module FS6370地raddr[7..0]加1,写数据位变为读数据位;g.module FS6370锁存它的raddr[7..0]地址及读数据位后经sda写入时钟芯片;h.module FS6370从sda读出时钟芯片的时钟数据至module FS6370的数据输出data_rm[7..0],data_rm[7..0]数据经module FT245BM数据输入idata[7..0]上传至上位机;i.重复步骤203).i.。
205).时钟模块工作模式:a.module FS6370模式控制输出mode为“0”,时钟芯片模式控制输入MODE为“0”,时钟芯片为编程模式,频率通道CLK_A、CLK_B、CLK_C输出EEPROM更新前的时钟信号;b.module FS6370的mode为“1”,时钟芯片的MODE为“1”,时钟芯片为运行模式,频率通道CLK_A、CLK_B、CLK_C输出EEPROM更新后的时钟信号。
206).时钟模块数据传输:a.时钟芯片的串行时钟SCL来自module FS6370的scl,时钟芯片的串行数据SDA与module FS6370的sda双向传输数据;b.处于编程模式时SCL和SDA有串行时钟和串行数据,处于运行模式时sda为高阻状态且SDA无串行数据。
207).时钟模块输出更新:a.时钟数据写入EEPROM不是在线更新,掉电后EEPROM保存时钟数据,上电后CLK_A、CLK_B、CLK_C输出更新时钟信号;b.时钟数据直接写入控制寄存器是在线更新,掉电后寄存器不保存时钟数据,上电后CLK_A、CLK_B、CLK_C输出非更新时钟信号;c.时钟数据先写入EEPROM再写入控制寄存器,既保存时钟数据又在线更新时钟信号。
有益效果:本测试图形在线时钟更新方法是国际首创,该更新方法的独特之处如下:
1.时钟更新控制界面集成在主控测试界面中,因此测量过程中无需更换控制界面。
2.时钟更新时只需在三个时钟通道编辑框中任意输入时钟频率,即可使时钟模块的三个频率通道输出准确的时钟信号。
3.时钟更新实现了上位机界面控制下的全自动在线操作,克服了低效率、非连续的时钟更新而导致显示测试图形难以在线更新的缺陷。
【附图说明】
图1、图2分别是本发明上位机(PC)控制、下位机(USB模块、FPGA主控、时钟模块)运行流程图。图1下部上位机(PC)的USB接口接图2上部下位机(USB模块、FPGA主控、时钟模块)的USB接口,图2下部下位机(USB模块、FPGA主控、时钟模块)的CLK_A、CLK_B、CLK_C是三路时钟信号输出。
【具体实施方式】
本发明实施方式是基于计算机通用串口总线(USB)通讯的显示测试图形在线时钟更新方法。上位机控制频率计算、方案选择、数据发送和数据接收,下位机运行数据接收、数据发送、数据写入和数据读出。
时钟频率计算属数学计算方式(MCW)。上位机MFC界面的计算控键Calculate运行第一步:根据式fCLK′=fREF(NFNR)(1NP)]]>计算输出频率,NF取值范围是1~2047,其中不能取值10、11、12、13、14、15、19、20、21、22、23、28、29、30、31、37、38、39、46、47、55,NR取值范围是1~255,NP取值是1、2、3、4、5、6、8、9、10、12、15、16、18、20、25、50。
频率误差判断属误差计算方式(ECW)。上位机MFC界面的计算控键Calculate运行第二步:根据式Δferr=|fCLK-f′CLK|计算频率误差,Δferr为频率绝对误差;计算Δferr需三层取值循环,内层循环是设定NF、NR,在NP取值范围内计算Δferr,中层循环是设定NF,依次在NP、NR取值范围内计算Δferr,外层循环是依次在NP、NR、NF取值范围内计算Δferr;三层循环完成后,凡是Δferr小于0.001的f′CLK,其分频系数NP、NR、NF均进入解决方案列表。
列表方案选择属数据生成方式(DGW)。上位机MFC界面的计算控键Calculate运行第三步:在解决方案列表中任选一个方案,StrTXData中生成符合这一方案的16个字节时钟数据。
在线更新编程属数据发送/接收方式(DSW&DRW)。点击上位机MFC界面的在线编程控键PROGRAMMING ONLINE,StrTXData中的16个字节时钟数据下传至下位机的FPGA,StrRXData中立刻显示被下传的16个字节时钟数据。其步骤如下:
(1)发送“FFH”至FPGA的module FT245BM,发送每个数据之前的时钟更新校验标志。
(2)发送“40H”至module FT245BM,module FT245BM置时钟芯片的EEPROM地址。
(3)发送“01H”和16个字节时钟数据至module FT245BM,即将发送16个字节时钟数据、发送16个字节时钟数据至module FT245BM数据缓存区。
(4)发送“08H”至module FT245BM,module FT245BM的复位输出reset置“0”,禁止FPGA的module FS6370启动。
(5)发送“02H”和寄存器地址至module FT245BM,即将发送寄存器地址、发送寄存器地址、预置module FT245BM的rd为“1”和wr为“0”。
(6)发送“04H”至module FT245BM,module FT245BM的wr置“1”和rd置“0”、提取module FT245BM数据缓存区的时钟数据。
(7)发送“10H”至module FT245BM,reset置“1”,启动module FS6370。
(8)重复步骤(4)至(7)十六次,16个字节时钟数据由module FS6370写入时钟芯片的EEPROM。
(9)发送“80H”至module FT245BM,module FT245BM置时钟芯片的器件地址。
(10)重复步骤(3),再重复步骤(4)至(7)十六次,16个字节时钟数据由module FS6370直接写入时钟芯片的控制寄存器。
(11)重复步骤(2)。
(12)重复步骤(4)、(5)、(7)和发送“00H”至module FT245BM十六次,module FS6370从时钟芯片的EEPROM中读出16个字节时钟数据后经module FT245BM上传至StrRXData。
(13)运行模式切换:a.重复步骤(4);b.发送“20H”至module FT245BM,rd、wr置“0”,module FS6370的模式控制输出mode由“0”变为“1”;c.重复步骤(7),module FS6370从编程模式变为运行模式。
USB模块运行属数据传输方式(DTW)。USB模块的RXF为“0”,moduleFT245BM的USB_RXF为“0”,module FT245BM的USB_RD为“0”,USB模块的D[7..0]已准备好,module FT245BM的USB_DATA[7..0]接收数据;USB模块的TXE为“0”,module FT245BM的USB_TXE为“0”,module FT245BM的USB_WR为“1”,module FT245BM的USB_DATA[7..0]已准备好,USB模块的D[7..0]上传数据。
module FT245BM运行属数据接收/发送方式(DRW&DSW)。module FT245BM实现以下功能:a.根据步骤(1),校验开始标志;b.根据步骤(2),置EEPROM地址;c.根据步骤(3),时钟数据进入数据缓存区;d.根据步骤(4),禁止module FS6370启动;e.根据步骤(5),接收寄存器地址、预置module FT245BM的rd为“1”和wr为“0”;f.根据步骤(6),提取时钟数据至module FT245BM的数据输出rdata[7..0]、module FT245BM的wr置“1”和rd置“0”;g.根据步骤(7),启动module FS6370;h.根据步骤(8),时钟数据写入EEPROM;i.根据步骤(9),置器件地址;j.根据步骤(10),时钟数据直接写入控制寄存器;k.根据步骤(11),置EEPROM地址;1.根据步骤(12),EEPROM的时钟数据上传至StrRXData;m.根据步骤(13),module FS6370从编程模式变为运行模式。
module FS6370写入运行属数据写入方式(DWW)。写入时钟数据方式:a.根据步骤(6),module FS6370的wr为“1”和rd为“0”,module FS6370是写数据;b.moduleFS6370以I2C总线时序开始传输,scl为“1”时sda由“1”变“0”;c.module FT245BM的raddr[7..0]送器件地址及写数据位至module FS6370的raddr[7..0];d.moduleFS6370锁存它的raddr[7..0]地址及写数据位后经sda写入时钟芯片;e.moduleFT245BM的addr[7..0]送寄存器地址至module FS6370的addr[7..0];f.module FS6370锁存它的addr[7..0]地址后经sda写入时钟芯片;g.module FT245B的rdata[7..0]送时钟数据至module FS6370的data[7..0];h.module FS6370锁存时钟数据后经sda写入时钟芯片;i.module FS6370以I2C总线时序结束传输,scl为“1”时sda由“0”变“1”。
module FS6370读出运行属数据读出方式(DRW)。读出时钟数据方式:a.根据步骤(5),module FS6370的rd为“1”和wr为“0”,module FS6370是读数据;b.moduleFS6370以I2C总线时序开始传输,scl为“1”时sda由“1”变“0”;c.module FT245BM的raddr[7..0]送EEPROM地址及写数据位至module FS6370的raddr[7..0];d.moduleFS6370锁存它的raddr[7..0]地址及写数据位后经sda写入时钟芯片;e.moduleFT245BM的addr[7..0]送寄存器地址至module FS6370的addr[7..0];f.module FS6370锁存它的addr[7..0]地址后经sda写入时钟芯片;g.module FS6370的raddr[7..0]加1,写数据位变为读数据位;h.module FS6370锁存它的raddr[7..0]地址及读数据位后经sda写入时钟芯片;i.module FS6370从sda读出时钟芯片的时钟数据至moduleFS6370的数据输出data_rm[7..0],data_rm[7..0]数据经module FT245BM数据输入idata[7..0]上传至上位机;j.module FS6370以I2C总线时序结束传输,scl为“1”时sda由“0”变“1”。
时钟模块工作模式属模式切换方式(MSW)。切换方式:a.module FS6370的mode为“0”,时钟芯片的MODE为“0”,时钟芯片为编程模式,频率通道CLK_A、CLK_B、CLK_C输出EEPROM更新前的时钟信号;b.module FS6370的mode为“1”,时钟芯片的MODE为“1”,时钟芯片为运行模式,频率通道CLK_A、CLK_B、CLK_C输出EEPROM更新后的时钟信号。
时钟模块数据传输属串行传输方式(STW)。传输方式:a.时钟芯片的SCL来自module FS6370的scl,时钟芯片的SDA与module FS6370的sda双向传输数据;b.处于编程模式时SCL和SDA有串行时钟和串行数据,处于运行模式时sda为高阻状态且SDA无串行数据。
时钟模块输出属在线更新方式(OLUW)。更新方式:a.时钟数据写入EEPROM不是在线更新,掉电后EEPROM保存时钟数据,上电后CLK_A、CLK_B、CLK_C输出更新时钟信号;b.时钟数据直接写入控制寄存器是在线更新,掉电后控制寄存器不保存时钟数据,上电后CLK_A、CLK_B、CLK_C输出非更新时钟信号;c.时钟数据先写入EEPROM再写入控制寄存器,既保存时钟数据又在线更新时钟信号。