ВНИМАНИЕ! На форуме начался конкурс - астрофотография месяца ИЮЛЬ-АВГУСТ!
0 Пользователей и 1 Гость просматривают эту тему.
А что в конце той строки, где байер сбит. Я так понял что это ADCCLK дурит?пиэс: а сбивается он посреди строки, или на краю?
Цитата: Serj от 06 Дек 2015 [23:42:52]А что в конце той строки, где байер сбит. Я так понял что это ADCCLK дурит?пиэс: а сбивается он посреди строки, или на краю? я не знаю, что там в конце стоит, отыскать место в НЕХ последовательности нереально сложно и всё равно непонятно. цвет сбивается всегда с начала строки и пачкой от одной до нескольких строк. я щас файл кривой положу на диск, кто хотите - поковыряйте, мож проясните чтосьhttps://drive.google.com/open?id=0B-uW0Otv8WkQNjFHc2lodklIUXchttps://drive.google.com/open?id=0B-uW0Otv8WkQUENRUkswWlpDbmc
мы лучше CMOS окучим, там проще
Цитата: Майоров Виктор от 07 Дек 2015 [09:44:12]мы лучше CMOS окучим, там прощеЭто они не все КМОПы видели ... Есть такие КМОПы, что о ПЗС-ке мечтаешь как о легкой приятной прогулке. Не, ПЗС-ки это на сладкое, никак не КМОПы, не соглашусь.
///===== тактирование ацп. =========================================================case (buffer) 20,21: CDSCLK1 <= SSC_ADC; //==> импульс фиксации уровня чёрного default: CDSCLK1 <= 1'b0; endcase case (buffer) 42,43,44: CDSCLK2 <= SSC_ADC; //==> импульс выборки значения яркости default: CDSCLK2 <= 1'b0; endcase case (buffer) 44,45,46,47,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19: ADCCLK <= SSC_ADC; //==> HB,LB 16 bit default: ADCCLK <= 1'b0; endcase ///=================================================================================
`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Description: Time generator 1MHz for DALSA CCD FTF5066C//reg1[1] byte=0x02;//подача питания на MAX618//reg1[2] byte=0x04;//управление накоплением заряда//reg1[3] byte=0x08;//управление экспозицией//////////////////////////////////////////////////////////////////////////////////module FTF5066C_1 /*#(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 wire PWRTGDRW_MAX618,//LOC = P190;//УПРАВЛЕНИЕ ПИТАНИЕМ MAX618 output wire V_DRIVE11, //LOC = P164;//УПРАВЛЕНИЕ ПИТАНИЕМ 1 включить 11 вольт output wire PWRTGDRW, //LOC = P189;//УПРАВЛЕНИЕ ПИТАНИЕМ 2 SN74LVC1T45 output wire TD_WTHLVL, //LOC = P102;//ИМПУЛЬСЫ УПРАВЛЕНИЯ EL7156 off-11V, on-8V//======================CCD DALSA FTF5066C output wire 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 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; output reg SG, //LOC = P74; output reg RG, //LOC = P75; // 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.reg [25:0]pix_; //always @ (posedge clock)begin if (buffer == 47) begin // new tick if (pix == 5149)// кол-во пикселей в строке 100+9+20+4+4992+4+20 = 5149 begin if (row == 6703) // кол-во строк в кадре 6703 begin // wait if (transport == 1'b1) begin row <= 0; pix_ <= 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; 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 <= 100)); // 0,688 wire SSC_ADC = !((pix > 0) && (pix <= 96)); // 0,684 пропускаем 4 такта ацпwire SSC_CCD = !((pix > 0) && (pix <= 100)); // 0,688 //импульсы вертикального переноса заряда 194 Гц //при накоплении выставляем 8 вольт, а при переносе пульсируем - с ампл. 11 вольтwire TG_A1 = integration ? 1'b0 : transport ? (pix >= 30) && (pix <= 80) : 1'b0 ; //188,501wire A2 = integration ? 1'b1 : transport ? !((pix >= 20) && (pix <= 50)): 1'b0 ; //125,313wire A3 = integration ? 1'b1 : transport ? !((pix >= 40) && (pix <= 70)): 1'b0 ; //250,438wire A4 = integration ? 1'b1 : transport ? !((pix >= 60) && (pix <= 90)): 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 вольт.assign V_DRIVE11 = integration ; //8V - накопление заряда, 11V - вертикальный перенос pin164assign TD_WTHLVL = integration ;//|| SSC; //переключатель напр.11/8 вольт на EL7156. pin102assign PWRTGDRW = transport ; //подача питания на драйверы гориз.переноса pin189 //====================== CCD DALSA FTF5066C ===================================================always @ (posedge clock) begin//================== ВЕРТИКАЛЬНЫЙ ПЕРЕНОС 194 Гц =============================================== 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) ///================== ГОРИЗОНТАЛЬНЫЙ ПЕРЕНОС 1 МГц ============================================ RG <= buffer == 0 && SSC_CCD; //LOC = P75; Reset Gate SG <= buffer < 24 && SSC_CCD; //LOC = P74; Summing Gate C1W <= !((buffer < 16 || buffer > 39) && SSC_CCD);//LOC = P62; Register Clock (Phase 1) C2W <= !(!(buffer < 8 || buffer > 31) && SSC_CCD);//LOC = P63; Register Clock (Phase 2) C3W <= buffer < 24 && SSC_CCD; //LOC = P64; Register Clock (Phase 3) C1X <= !((buffer < 16 || buffer > 39) && SSC_CCD);//LOC = P68; Register Clock (Phase 1) C2X <= !(!(buffer < 8 || buffer > 31) && SSC_CCD);//LOC = P69; Register Clock (Phase 2) C3X <= buffer < 24 && SSC_CCD; //LOC = P65; Register Clock (Phase 3) ///=============================================================================================== frame <= SSC; //SSC header_clock <= buffer == 0 && pix >= 40 && pix <= 51; header <= pix >= 40 && pix <= 51; //8 byte 380-391 ///=============================================================================================== case (pix) 40: header_data <= 8'h01; //01 заголовок маркера 41: header_data <= 8'h02; //02 заголовок маркера 42: header_data <= row[15:8]; //ст.байт номер строки 43: header_data <= row[7:0]; //мл.байт номер строки 44: header_data <= data_msb[7:0]; //ст.байт Т.Пельтье 45: header_data <= data_lsb[7:0]; //мл.байт Т.Пельтье 46: header_data <= data_gain[5:0]; //усиление АЦП 47: header_data <= data_offset[7:0]; //смещение АЦП default: header_data <= 8'h00; endcase ///===== тактирование ацп. =========================================================case (buffer) 20,21: CDSCLK1 <= SSC_ADC; //==> импульс фиксации уровня чёрного default: CDSCLK1 <= 1'b0; endcase case (buffer) 42,43,44: CDSCLK2 <= SSC_ADC; //==> импульс выборки значения яркости default: CDSCLK2 <= 1'b0; endcase //case (buffer) case (buffer) 44,45,46,47,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19: ADCCLK <= SSC_ADC; //==> HB,LB 16 bit default: ADCCLK <= 1'b0; endcase ///================================================================================= endinitial begin buffer = 47; pix = 5149;// row = 6703; pix_ = 0; //cr_ = 0; endendmodule
ок, щас буду делать меандр и отчитываться в картинках, что получается. я уже задавал вопрос про 25 МГц и 50 кГц, это соотношение частот важно или не очень? а то у меня щас 1 МГц и 194 Гц.
ну я специально и не задаю, просто так получается щас. горизонтально пиксели с частотой 1 МГц перемещаются, а строки - 194 Гц, просто могу их и поширше сделать или поуже. если реально соотношение между вертикальным сдвигом и горизонтальным неважно, то тогда оставлю как есть.
Цитата: Andreichk от 07 Дек 2015 [22:52:52]ну я специально и не задаю, просто так получается щас. горизонтально пиксели с частотой 1 МГц перемещаются, а строки - 194 Гц, просто могу их и поширше сделать или поуже. если реально соотношение между вертикальным сдвигом и горизонтальным неважно, то тогда оставлю как есть.В каком ПО пишите проект?
Стробы защелки данных ADCL, ADCH в ПЛИС.