Page 34 - 网络电信2020年7月刊下
P. 34

解   决  方  案

            出。四通道的控制时间与单通道的控制时间相同,从而大大提                              CommErr_clr <= '0';
            高模块的工作效率。                                                elsif (CommErrcnt=X"27100")then
                2)内部四通道D/A控制信号发送                                     CommErr_clr <= '1';
                接收到“SSI_RCV”模块的D/A控制命令启动信号后,FPGA                     else
            开始向四片DAC7731发送控制命令(包含CS、SCLK、SDI、LDAC                    CommErr_clr <= '0';
            等信号),FPGA内部的“Four_Channel_DA”模块将并行读取                     end if;
            Buffer中存储的控制字,即4个通道同时读取控制字,并同时向                          end if;
            各自通道的DAC7731按照芯片的控制时序发送控制信号。因为                           end process;
            DAC7731的控制时钟  SCLK的最小时钟周期为50ns,即时钟最高
            频率为20MHz,由于模块设计中采用的是10MHz晶振,所以FPGA                       三、D/A 转换电路
            向DAC7731发送的控制时钟SCLK也为10MHz。                              FPGA模块接收串行数据、解码、容错处理后,向DAC发送
                DAC7731的基本控制方法是:FPGA向各个通道DAC7731同时               控制启动命令,完成D/A输出。D/A转换电路采用BB公司生产
            发送CS使能信号,接着发送SCLK时钟信号,FPGA在SCLK的下降                   的  DAC7731。DAC7731是电压输出型,16位分辨率,转换时间
            沿时按节拍开始发送16bit串行控制字SDI信号,即模拟电压输                      5μs,内置+10V参考,R-2R梯形架构         [12] ,运算放大器作为缓冲
            出控制字。当SDI发送完成后,CS信号禁止,表示控制字数据                        输出,允许用户通过外部接线把  DAC配置成多种输出范围,包
            传输完成。FPGA接着向DAC7731发送LDAC脉冲(D/A转换启动脉                 括0V到+10V,-5V到+5V,或-10V到+10V三种。图6是±10V输出
            冲),DAC7731芯片在LDAC信的上升沿启动D/A转换,从而完成                   时的接线图。
            对DAC7731的控制。                                          图 6 DAC7731±10V 输出时的接线图
                3)容错处理
                当上位机(或其他外设)或模块发生故障,通信突然中
            断。由于SSI通信中只有CLK和DATA信号,通信中断可能会导致
            串行收数错位,D/A输出模拟信号出现大幅跳变,从而导致一些
            不可预计的后果。出于可靠性和安全性的考虑,接收模块设计
            由容错处理机制。接收模块连续测量CLK的有效性,当CLK长时
            间处于高电平(CLK处于空闲或故障时为高电平)时,测试时间
            定为0.6ms,因为按照最慢波特率100Hz计算,发送一帧控制命
            令需要约570μs。
                4)VHDL具体实现
                process (LCLK,ESCLK)
                begin
                if (ESCLK='0')then
                clrcnt <= X"0000000";
                CommErrcnt <= X"00000";
                elsif (LCLK'event and LCLK='1')then
                clrcnt <= clrcnt + 1;                                DAC7731串行控制接口,接线简单。串行输入DAC控制字,
                CommErrcnt <= CommErrcnt + 1;                    高位在前,由管脚“LDAC”控制装入寄存器。该转换器可以用
                if (clrcnt>=X"1312D01")then                      ±12V到±15V双模拟电源和一个+5V逻辑电源供电。具有外部复
                clrcnt <= X"0000000";                            位功能,可立即将DAC输出电压和DAC寄存器置为最小值,单极
                end if;                                          性输出对应十六进制0000H,双极性输出对应十六进制8000H。
                if (clrcnt<X"1312D00")then
                clr <= '0';                                          四、应用前景
                elsif (clrcnt=X"1312D00")then                        当信号传输距离较远时,模拟信号传输质量难以保证                  [13]  。
                clr <= '1';                                      在实际应用中,可以采用这种基于SSI接口的数据传输和D/A转
                else                                             换模块来实现多通道模拟信号的传输,传输距离大大提高                     [14] 。
                clr <= '0';                                      这种基于SSI通信的D/A传输转换是一种高速传输,其中数据控
                end if;                                          制命令传输最快为57μs(1MHz  时钟频率时),DAC7731控制指
                if (CommErrcnt>=X"27101")then                    令发送约需要3μs,DAC7731完成模数转换需要5μs             [15] ,完成四
                CommErrcnt <= X"00000";                          通道D/A信号传输转换时间为65μs,传输速率可达15kHz,可满
                end if;                                          足大多数工业制应用场合模拟信号传输需求               [16] ,是一种高可靠
                if (CommErrcnt<X"27100")then                                                               下转27页

            68                                         网络电信 二零二零年七月
   29   30   31   32   33   34   35   36   37   38   39