ВНИМАНИЕ! На форуме начался конкурс - астрофотография месяца ИЮЛЬ-АВГУСТ!
0 Пользователей и 2 Гостей просматривают эту тему.
А какой смысл в этом всем, результат будет лучше чем у любительских камер?
`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Description: Time generator for DALSA CCD FTF5066C//reg1[1] byte=0x02;//подача питания на MAX618//reg1[2] byte=0x04;//управление накоплением заряда//reg1[3] byte=0x08;//управление экспозицией//////////////////////////////////////////////////////////////////////////////////module FTF5066C /*#(parameter BASE = 0)*/( // Clock input wire clock, input wire [5:0]data_gain,//<===== input wire [7:0]data_offset,//<===== input wire [7:0]data_msb, input wire [7:0]data_lsb, // Config input wire CR_IN,//<== перед открытием затвора и началом накопления заряда разряжаем матрицу импульсом CR input wire power_MAX618,//<== подача питания на MAX618(reg1[1]) input wire integration, //<== накопление пикселей(reg1[2]) input wire transport, //<== перенос заряда в хост(reg1[3]) // CCD output PWRTGDRW_MAX618,//LOC = P190;//УПРАВЛЕНИЕ ПИТАНИЕМ MAX618 output V_DRIVE11, //LOC = P164;//УПРАВЛЕНИЕ ПИТАНИЕМ 1 включить 11 вольт output PWRTGDRW, //LOC = P189;//УПРАВЛЕНИЕ ПИТАНИЕМ 2 SN74LVC1T45 output TD_WTHLVL, //LOC = P102;//ИМПУЛЬСЫ УПРАВЛЕНИЯ EL7156 off-11V, on-8V//======================CCD DALSA FTF5066C output CR, //LOC = P103; output reg TGZ, //LOC = P100; output reg TGY, //LOC = P96; output reg TGX, //LOC = P80; output reg TGW, //LOC = P76; output reg A1T, //LOC = P99; output reg A2T, //LOC = P93; output reg A3T, //LOC = P94; output reg A4T, //LOC = P97; output reg A1B, //LOC = P77; output reg A2B, //LOC = P90; output reg A3B, //LOC = P89; output reg A4B, //LOC = P78; output reg RG, //LOC = P75; output reg SG, //LOC = P74; output reg C1X, //LOC = P68; output reg C2X, //LOC = P69; output reg C3X, //LOC = P65; output reg C1W, //LOC = P62; output reg C2W, //LOC = P63; output reg C3W, //LOC = P64; // ADC output reg CDSCLK1, output reg CDSCLK2, output reg ADCCLK, // out output reg frame, output reg header, output reg[7:0] header_data, output reg header_clock);reg [7:0] buffer;reg [12:0] pix;// кол-во пикселей в строкеreg [15:0] row;// кол-во строк в кадре//reg [25:0]cr_; // Charge Reset (CR) pulse on VNS. always @ (posedge clock)begin if (buffer == 15) begin // new tick if (pix == 5737)// кол-во пикселей в строке 688+9+20+4+4992+4+20 = 5737 begin if (row == 6703) // кол-во строк в кадре 6703 begin // wait if (transport == 1'b1) begin row <= 0; //cr_ <= 0; end end else begin // new line pix <= 0; row <= row + 1; buffer <= 0; end end else begin // new pixel pix <= pix + 1; //cr_ <= cr_ + 1;//Charge Reset (CR) pulse on VNS buffer <= 0; end end else begin buffer <= buffer + 1; endendwire SSC = !((pix > 0) && (pix <= 688)); // 0,688wire SSC_ADC = !((pix > 0) && (pix <= 684)); // 0,684 пропускаем 4 такта ацпwire SSC_CCD = !((pix > 0) && (pix <= 688)); // 0,688 //импульсы вертикального переноса заряда 50кГц //при накоплении выставляем 8 вольт, а при переносе пульсируем - с ампл. 11 вольтwire TG_A1 = integration ? 1'b0 : transport ? (pix >= 188) && (pix <= 501) : 1'b0 ; //188,501wire A2 = integration ? 1'b1 : transport ? !((pix >= 125) && (pix <= 313)) : 1'b0 ; //125,313wire A3 = integration ? 1'b1 : transport ? !((pix >= 250) && (pix <= 438)) : 1'b0 ; //250,438wire A4 = integration ? 1'b1 : transport ? !((pix >= 375) && (pix <= 563)) : 1'b0 ; //375,563// CR <= !(cr_ >= 0 && cr_ <= 687); //LOC = P103; Charge Reset (CR) pulse on VNS. assign CR = CR_IN; //LOC = P103; Charge Reset (CR) pulse on VNS. assign PWRTGDRW_MAX618 = !power_MAX618; //подача питания на драйверы MAX618 pin190// при накоплении заряда устанавливаем 8 вольт, а 11 вольт гасим до 0.assign V_DRIVE11 = integration && SSC; //0V - накопление заряда, 11V - вертикальный перенос pin164assign TD_WTHLVL = integration && SSC; //переключатель напр.11/8 вольт на EL7156. pin102assign PWRTGDRW = transport && SSC; //подача питания на драйверы гориз.переноса pin189 //====================== CCD DALSA FTF5066C ===================================================always @ (posedge clock) begin//================== ВЕРТИКАЛЬНЫЙ ПЕРЕНОС 50 кГц ============================================== TGZ <= TG_A1; //LOC = P100; Image Clock Transfer Gate (Phase 1) TGY <= TG_A1; //LOC = P96; TGX <= TG_A1; //LOC = P80; TGW <= TG_A1; //LOC = P76; //TOP A1T <= TG_A1; //LOC = P99; Image Clock (Phase 1) A2T <= A2; //LOC = P93; Image Clock (Phase 2) A3T <= A3; //LOC = P94; Image Clock (Phase 3) A4T <= A4; //LOC = P97; Image Clock (Phase 4)//BOT A1B <= TG_A1; //LOC = P77; Image Clock (Phase 1) A2B <= A2; //LOC = P90; Image Clock (Phase 2) A3B <= A3; //LOC = P89; Image Clock (Phase 3) A4B <= A4; //LOC = P78; Image Clock (Phase 4) ///================== ГОРИЗОНТАЛЬНЫЙ ПЕРЕНОС 25МГц ============================================ RG <= buffer == 0 && SSC_CCD; //LOC = P75; Reset Gate SG <= buffer < 8 && SSC_CCD; //LOC = P74; Summing Gate // LEFT (SINGLE OUTPUT Left C1 C2 C3)//RIGHT (SINGLE OUTPUT Right C2 C1 C3) C1W <= !( (buffer < 5 || buffer > 12) && SSC_CCD); //LOC = P62; Register Clock (Phase 1) C2W <= !(!(buffer < 2 || buffer > 9) && SSC_CCD); //LOC = P63; Register Clock (Phase 2) C3W <= buffer < 8 && SSC_CCD; //LOC = P64; Register Clock (Phase 3) C1X <= !( (buffer < 5 || buffer > 12) && SSC_CCD); //LOC = P68; Register Clock (Phase 1) C2X <= !(!(buffer < 2 || buffer > 9) && SSC_CCD); //LOC = P69; Register Clock (Phase 2) C3X <= buffer < 8 && SSC_CCD; //LOC = P65; Register Clock (Phase 3) //===============================================================================================//=============================================================================================== frame <= SSC; //SSC header_clock <= (buffer == 0 || buffer == 1) && !SSC; header <= (pix >= 380) && (pix <= 387); //8bit 5380-5387 case (pix) 380: header_data <= 8'h01; //55 заголовок маркера 381: header_data <= 8'h02; //AA заголовок маркера 382: header_data <= row[15:8]; //ст.байт номер строки 383: header_data <= row[7:0]; //мл.байт номер строки 384: header_data <= data_msb[7:0]; //ст.байт Т.Пельтье 385: header_data <= data_lsb[7:0]; //мл.байт Т.Пельтье 386: header_data <= data_gain[5:0]; //усиление АЦП 387: header_data <= data_offset[7:0]; //смещение АЦП endcase //===== тактирование ацп. ========================================================= CDSCLK1 <= buffer == 2 && SSC_ADC; //==> импульс фиксации CDSCLK2 <= (buffer == 14 || buffer == 15) && SSC_ADC; //==> импульс выборки ADCCLK <= (buffer == 0 || buffer == 1) && SSC_ADC; // HB,LB 16 bit //================================================================================= end initial begin buffer = 15; pix = 5737;// row = 6703; //cr_ = 0; endendmodule
Отзовитесь битте.