ad9923a icx205alCCD驱动电路

2019-03-25 09:13发布

最近在做一个项目,是用fpga配置ad9923a 来驱动 ccd  ,型号是icx205al 。配置ad9923a的时序是串口方式配置,由于要配置的寄存器多达140个,每个由12位地址和28位数据总共40位组成 (不足位的补0),里面还有部分需要延时,附上时序图,有哪位大神能提供在下一个思路,程序想了好久了,总是些不对呀 1.jpg 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
eeleader
1楼-- · 2019-03-25 15:08
 精彩回答 2  元偷偷看……
danielzhou
2楼-- · 2019-03-25 16:42
就按照这个时序来控制这3个信号,FPGA拉低SL、拉低SCK,同时送出SDI,地址和数据全部发完之后再拉高SL,SCK,只要注意在D27发出之后再动作SL和SCK就可以了,至于SCK的时钟频率,可以参考接收芯片的手册选取
eeleader
3楼-- · 2019-03-25 17:04

简单设计一下这个程序如下:

 

process(clk,rst)

begin

if (rst='0') then

   state<=(others=>'0');

   sl<='1';

   sclk<='1';

   sdi<='0';

elsif clk'event and clk='1' then

  if (state=x"0") then

        data<=tx_data( 需要发送的数据)

        state<=x"1";

        sl<='1';

  elsif (state=x"1") then

       sl<='0';

       sclk<='0';

        state<=x"2";

 elsif (state=x"2") then

      if(cnt=39) then ( 数据位数)

        cnt<=0;

        state<=x"3";

     else

        cnt<=cnt+1;

        state<=x"2";

    end if

     sdi<=data(39);

     data<=data(38 downto ) & '0';

     sclk<='1';

 elsif (state=x"3") then

     sl<='1';

     state<=x"0";

 else

    state<=(others=>'0');

   sl<='1';

   sclk<='1';

   sdi<='0';

end if;

end if;

end process;

一周热门 更多>