光电-线阵CCD驱动电路的FPGA时序设计.doc
文本预览下载声明
线阵CCD驱动电路的FPGA时序设计
实验目标
设计一线阵CCD驱动时钟,用一输入的clk,驱动CCD、AD、FIFO组成的整个CCD系统,并要求有一个复位端reset。
本实验主要是基于FPGA设计线阵CCD器件复杂驱动电路和整个CCD的电子系统控制逻辑时序的方法,并给出时序仿真波形,通过对线阵CCD驱动电路的时序设计,了解一个系统设计的基本方法。
总体方案
元器件选择
1、CCD:sonyILX511
2、AD:Analog Devices --- AD9224
3、FIFO:Integrated Device Technology --- IDT7204
方案:
FPGA产生CCD线阵、AD、FIFO所需要的驱动时钟,从而实现ccd线阵信号的采集到信号调理,再经由AD进行模数转换后经FIFO 实现信号输出到读接口的过程。
我们需要用一个输入的clk,产生CCD、AD、FIFO所需要的clk,用以驱动它们。CCD需要两个时钟:rog和clk,AD和FIFO分别需要一个clk。
实验程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ccd is
port(clk,reset:in std_logic;
rog,ccd1,ad1,fifo1:out std_logic);
end ccd;
architecture ccd_1 of ccd is
signal count:integer range 0 to 2130;
signal rog2:std_logic;
signal ccd2:std_logic;
signal ad2:std_logic;
signal fifo2:std_logic;
begin
rog=rog2;
ccd1=ccd2 or clk;
ad1=ad2 or clk;
fifo1=fifo2 or clk;
process(reset,clk)
begin
if reset=0 then
rog2=1;
ccd2=1;
ad2=1;
fifo2=1;
count=0;
elsif clkevent and clk=1 then
count=count+1;
case count is
when 0 to 6=
rog2=1;
ccd2=1;
ad2=1;
fifo2=1;
when 7 to 16=
rog2=0;
ccd2=1;
ad2=1;
fifo2=1;
when 17 to 22=
rog2=1;
ccd2=1;
ad2=1;
fifo2=1;
when 23 to 55=
rog2=1;
ccd2=0;
ad2=1;
fifo2=1;
when 56 to 58=
rog2=1;
ccd2=0;
ad2=0;
fifo2=1;
when 59 to 2106=
rog2=1;
ccd2=0;
ad2=0;
fifo2=0;
when 2107 to 2109=
rog2=1;
ccd2=0;
ad2=0;
fifo2=0;
when 2110 to 2130=
rog2=1;
ccd2=0;
ad2=1;
fifo2=1;
end case;
if count=2130 then
count=0;
end if;
end if;
end process;
end ccd_1;
仿真结果:
全图:
实验报告;
通过本次实验加深了对CCD的了解,掌握了VHDL的使用方法,加深了解时序电路的设计法。
显示全部