|
Сброс SPI (Verilog), Начальное состояние триггеров |
|
|
|
Sep 9 2015, 15:23
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 30-09-13
Пользователь №: 78 536

|
Добрый день уважаемые, хочу поделиться моей проблемой. Имеется SPI Slave, вот код: Код module SPIslave( input wire RESET, input wire CSIN, input wire SCKIN, input wire MOSIIN, output wire MISOOUT, output reg [15:0] DATAOUT, );
reg [15:0] data; reg [4:0] count;
assign MISOOUT = data[15];
always @ (negedge SCKIN) if (RESET & ~CSIN) data <= { data[14:0], MOSIIN };
always @ (posedge SCKIN) if (~RESET | CSIN) count <= 5'b00000; else count <= count + 1'b1;
always @ (count[4]) DATAOUT <= data
endmodule Вся проблема в RESETe. Хочу обходиться без лишних ног, ибо на CPLD итак много всего. Если уберу из кода RESET, то счетчик начинает считать не с начала условий, под которые он подписан. Т.е. Подаю клок, потом подаю CSIN = 1 (до этого она в нуле). Далее отпускаю CSIN = 0, но счетчик не начинает считать. И только по прошествии 7 - 8 клоков оживает. Я думал что при включении питания CPLD выставляет все в "0", но получше глянув в Post-моделировании заметил что не все в нуле. Мож я чет не понимаю? На Verilogе сижу не долго и прошу помощи у экспертов.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 28)
|
Sep 9 2015, 15:44
|

Знающий
   
Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402

|
Мастер-устройство работать с CS будет по словам (т.е. опускаться на 16 бит, а потом подниматься и для передачи следующих 16 бит снова опускаться) или в течении всего пакета будет в нуле, пока посылка не закончится? Если первый вариант, то счётчик Вам вообще не нужен. По теме, предположу, что смОтрите, например, в Квартусе как post-fitting registers, а т.к. он у Вас внутренний и наружу не выводится, то компилятор представил всё так, как ему удобно.
--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
|
|
|
|
|
Sep 9 2015, 15:49
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 30-09-13
Пользователь №: 78 536

|
Цитата(EvgenyNik @ Sep 9 2015, 19:44)  Мастер-устройство работать с CS будет по словам (т.е. опускаться на 16 бит, а потом подниматься и для передачи следующих 16 бит снова опускаться) или в течении всего пакета будет в нуле, пока посылка не закончится? Если первый вариант, то счётчик Вам вообще не нужен. По теме, предположу, что смОтрите, например, в Квартусе как post-fitting registers, а т.к. он у Вас внутренний и наружу не выводится, то компилятор представил всё так, как ему удобно. Спасибо за ответ. Но счетчик нужен для дальнейшей модификации кода. Некоторые биты информации нужно будет выдергивать, а некоторые вставлять на другое место, и без счетчика никуда.
|
|
|
|
|
Sep 10 2015, 07:42
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 30-09-13
Пользователь №: 78 536

|
Цитата(Golikov A. @ Sep 10 2015, 11:07)  Сдается мне что дело не в ресете.... конечно при наличии CS, RESET не нужен, на первом же клоке счетчик должен уйти в 0, а на следующем с падением CS пойти считать. И тут у меня возникает вопрос клок присутствует до CS? Выдержан ли фронт CS относительно клока, не может быть какой-то метастабильности? Нет ли какого-то выхода на режим всей схемы? для того чтобы все было в тех состояниях что желаете не поможет ли такой ход? Код reg [15:0] data = 0; reg [4:0] count = 0; Есть вариант что клок до CS не присутствует. ТАм схема такая: CPLD связана с микросхемой по SPI, та в свою очередь переводит данные из SPI в I2C и обратно. Т.е. так: (FMC-ПОРТ) <-I2C-> (SC18IS602IPW) <-SPI-> CPLD. Но на CPLD еще заведен клок от I2C (наверно постоянный). Вот собственно мне и нужен SPI-Slave, ток как его сделать.
|
|
|
|
|
Sep 10 2015, 07:55
|

Знающий
   
Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402

|
Цитата(estel23 @ Sep 10 2015, 10:42)  ТАм схема такая: CPLD связана с микросхемой по SPI, та в свою очередь переводит данные из SPI в I2C и обратно. Т.е. так: (FMC-ПОРТ) <-I2C-> (SC18IS602IPW) <-SPI-> CPLD. Но на CPLD еще заведен клок от I2C (наверно постоянный). Вот собственно мне и нужен SPI-Slave, ток как его сделать. Ничего не понятно  Зачем конвертировать SPI<>I2C и обратно? Ну ладно. У SPI существует несколько режимов работы в плане того - в какой момент выдаются данные и когда их надо захватывать. Т.е. железно сделанный SPI для одного случая, может категорически не подойти для другого. Например, из вики цитата: Цитата Возможны четыре комбинации фазы (CPHA) и полярности (CPOL) сигнала SCLK по отношению к сигналам данных. Режимы работы определяются комбинацией бит CPHA и CPOL: CPOL = 0 — сигнал синхронизации начинается с низкого уровня; CPOL = 1 — сигнал синхронизации начинается с высокого уровня; CPHA = 0 — выборка данных производится по переднему фронту сигнала синхронизации; CPHA = 1 — выборка данных производится по заднему фронту сигнала синхронизации. Тактовый импульс I2C в общем случае не является регулярным сигналом. Как именно у Вас - надо смотреть.
--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
|
|
|
|
|
Sep 10 2015, 08:05
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 30-09-13
Пользователь №: 78 536

|
Цитата(EvgenyNik @ Sep 10 2015, 11:55)  Ничего не понятно  Зачем конвертировать SPI<>I2C и обратно? Ну ладно. У SPI существует несколько режимов работы в плане того - в какой момент выдаются данные и когда их надо захватывать. Т.е. железно сделанный SPI для одного случая, может категорически не подойти для другого. Например, из вики цитата: Тактовый импульс I2C в общем случае не является регулярным сигналом. Как именно у Вас - надо смотреть. Конвертация нужна, потому что некоторые микросхемы только по I2C, а некоторые только по SPI (см. рисунок). Про режимы я вроде разобрался. И мне нужно реализовать SPI так, как на графиках. Но для начала я пытаюсь сделать просто сдвиговый регистр. И из возможных пинов есть только 4 под SPI и один клок I2C. И я думаю как сделать сброс если клок не с начала подается, а при передачи информации.
Эскизы прикрепленных изображений
|
|
|
|
|
Sep 10 2015, 11:24
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 30-09-13
Пользователь №: 78 536

|
Цитата(EvgenyNik @ Sep 10 2015, 14:12)  Вариант: выкинуть SC18IS602IPW, подставив вместо неё сразу CPLD и подключить AD9517 и ADC к CPLD не рассматриваете? Кстати, на режим SPI у ADC смотрели? Он совместим с AD9517? И самое главное - SC18IS602 сможет реализовать SPI, нужный для ADC? Дело в том что плата не наша, она куплена. И после некоторых модификаций платы нужно воссоздать управление + дальнейшая доработка кода под наши модификации.
|
|
|
|
|
Sep 23 2015, 13:37
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 30-09-13
Пользователь №: 78 536

|
Цитата(Golikov A. @ Sep 10 2015, 16:26)  в CPLD асинхронный сброс возможен? Код always @ (posedge SCKIN or posedge CSIN) if (CSIN == 1' b1) count <= 5'b00000; else count <= count + 1'b1; Спасибо. Почти заработало. Точнее не очень почти. И снова прошу вашей помощи. Как видно на картинке сверху к MISO подключены сразу три устройства(будем рассматривать CPLD и АЦП), причем изначально CPLD работает когда начальная установка MISO в нуле, а АЦП наоборот, когда начальная установка MISO в единице, причем АЦП все время держит MISO в единице. Первая мысль - использовать 3-state буфер на выходе CPLD, чтоб в момент выбора MISO опускался и CPLD могла разговаривать по MISO, все остальное время выход в 3-state, а значит в единице, АЦП следит за этим. Внутри CPLD стоит на стреме регистр с заданными данными (которые к тому же подключены к выходам CPLD - это важно), и как только спадает CS и выбирается CPLD, то данные бегут по MISO. Когда все закончилось, то MISO возвращается в единицу и с ним работает АЦП. Проверяю я это все дело через нашу прогу. И вроде все работает и данные передаются, и на пинах нужная комбинация с регистра прет. Но есть косяк: Если работать через уже включенную прогу, то все норм. Но когда только-только подать питание на плату, то нужные данные в регистре отсутствуют. Смотрел на осциле. Заливаешь прогу, все есть. Перезагружаешь, ничего нет. Причем все остальное выполняется, и буфер работает, и регистры читаются, но только нули. В коде единице, у меня нули. Перезаливаю, все норм, перезагружаю - болты.
|
|
|
|
|
Sep 23 2015, 16:50
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата PLD работает когда начальная установка MISO в нуле, а АЦП наоборот, когда начальная установка MISO в единице, причем АЦП все время держит MISO в единице. это в корне не правильно. Вам абсолютно все равно должно быть в каком состояние MISO и MOSI, важны сигналы CS - выбор устройства, и фронт клока. По фронту клока мастера каждый слейв должен выставить если он выбран на MISO свое значение, а мастер на MOSI свое. Остальное время пофиг что в каком состоянии нарисуйте картинку кто у вас мастер и кто слейвы, как они соединены, как идут чипселекты, и схему вашего общения кто там что говорит и какие ноги куда движет...
|
|
|
|
|
Sep 24 2015, 08:27
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 30-09-13
Пользователь №: 78 536

|
Вообщем не могу правильно передавать биты во время начального запуска. Положение MISO важно, т.к. если я его оставлю без присмотра, то оно упадет в ноль, а дальше идет чтение АЦП, и прочитаются одни нули. Передача DATA: 00011110
Сообщение отредактировал estel23 - Sep 24 2015, 08:28
Эскизы прикрепленных изображений
|
|
|
|
|
Sep 24 2015, 09:44
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 30-09-13
Пользователь №: 78 536

|
Цитата(Golikov A. @ Sep 24 2015, 13:30)  MISO - бит которым управляет СЛЕЙВ!!!! что он поставит то вы и должны как МАСТЕР читать. Что за бред то? Ды я понимаю что MISO управляет слейв. Только не получается у меня управлять им. Вот например: я пишу слейв для CPLD, и после прочтения данных мне как бы на MISO наплевать, что с ним будет делать другой слейв. Но на деле смотрю в осцилл и вижу что когда никаких данных не передается, то слейв в нуле. Но как только пришла очередь АЦП, то она не поднимает сигнал MISO. Т.е. должна передать 00010010, но передаёт 11111111.
Сообщение отредактировал estel23 - Sep 24 2015, 09:45
|
|
|
|
|
Sep 24 2015, 09:55
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 30-09-13
Пользователь №: 78 536

|
Цитата(Genadi Zawidowski @ Sep 24 2015, 13:53)  Выход слейва - MISO - в каждом слейве дожден проходить через tri-state буфер, управляемый CS этого же слейва... Это все уже сделано)
|
|
|
|
|
Sep 24 2015, 10:07
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 30-09-13
Пользователь №: 78 536

|
Цитата(Genadi Zawidowski @ Sep 24 2015, 14:00)  OE буфера не должен ничем стробироваться, просто управляется от чипселекта. Не понял, а зачем Вам счетчик? Задним фронтом CE защелкиваете на паралельный выход то, что накопилось в сдвиговом регистре за последние 16 тактос CLK. Или у Вашей CPLD на все только один единственный клок? У моей CPLD на все один единственный клок. И тот включается когда передаются данные. А счетчик нужет для того, чтобы из разных регистров CPLD в разные биты записывать и считывать инфу. А буфер должен выключаться только при наступлении 8 бита, т.к. первые 8 бит - адрес регистра и указатель записи/считывания. Но я это все уже сделал, и даже работает. Остается вопрос первоначального включения, инициализации CPLD и АЦП, которая не может поднять MISO. Кстати тип АЦП: EV10AQ190A
Сообщение отредактировал estel23 - Sep 24 2015, 10:13
|
|
|
|
|
Sep 24 2015, 14:28
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 30-09-13
Пользователь №: 78 536

|
Цитата(EvgenyNik @ Sep 24 2015, 17:53)  А Вы подтянули MISO к питанию как сказано в п. 6.6 даташита? Да, конечно. Дело в том что плата не наша, она куплена. И после некоторых модификаций платы нужно воссоздать управление + дальнейшая доработка кода под наши модификации.
Сообщение отредактировал estel23 - Sep 24 2015, 14:29
|
|
|
|
|
Sep 24 2015, 19:49
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
есть вещи которые я не понимаю и не смогу понять наверное никогда...
если ваша CPLD отпустила линию в 3 состояние, линия подтянута к питанию, то каким образом после этого она остается в 0? Я думаю у вас какой-то баг с битами, и CPLD не отпускает линию, то есть она не понимает что передача закончилась, и даже поднятый CS ей побоку, что наверное логично если клоки пропадают, то последний бит так и стоит... Я думаю пора привести код, как вы сделали, а то происходит что-то уж совсем непонятное...
|
|
|
|
|
Sep 25 2015, 06:30
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 30-09-13
Пользователь №: 78 536

|
Цитата(Golikov A. @ Sep 24 2015, 23:49)  есть вещи которые я не понимаю и не смогу понять наверное никогда...
если ваша CPLD отпустила линию в 3 состояние, линия подтянута к питанию, то каким образом после этого она остается в 0? Я думаю у вас какой-то баг с битами, и CPLD не отпускает линию, то есть она не понимает что передача закончилась, и даже поднятый CS ей побоку, что наверное логично если клоки пропадают, то последний бит так и стоит... Я думаю пора привести код, как вы сделали, а то происходит что-то уж совсем непонятное... С нулем все впорядке, все поднимается. После долгих мучений я это сделал). Привожу код программы. Прошу не судить строго, т.к. я не очень силен в Verilogе и написал как смог, и даже почти работает. Т.е. MISO поднимается и данные передаются даже с инверсным клоком, как при начальном включении. Код module SPIslave( output wire led, //выход input wire SS_CPLD, input wire SCKIN, input wire MOSIIN, output wire MISOOUT, output wire [6:0] REGOUT, //выходные данные input wire [3:0] REGIN //входные данные ); /****************************************************************************/ reg MISO;
reg CS_CPLD;
reg [15:0] data;
reg [3:0]keyneg = 0; //выбор регистра reg [3:0]keyreg = 0; //выбор регистра
reg [4:0] nBit; //счетчик записи reg [4:0] rBit; //счетчик чтения
reg [7:0] REG00; //начальная установка синтезатора (да) reg [7:0] REG01; reg [7:0] REG02; // 8'b00011110 ---reg00 // 8'b01011110 ---reg02
/****************************************************************************/ assign led = SS_CPLD; assign REGOUT [6:0] = REG00 [6:0];
/****************************************************************************/ reg tstate = 1;
OBUFT OBUFT_inst (.O(MISOOUT), .I(MISO), .T(tstate)); //буфер 3-state
always @ (negedge SCKIN or posedge SS_CPLD) //управление буфером if(SS_CPLD==1) tstate = 1; else if (keyreg [3] == 1) tstate = 0; else tstate = 1; /****************************************************************************/ always @ (negedge SCKIN or posedge SS_CPLD) //счетчик записи if(SS_CPLD==1) nBit <= 5'b00000; else if (SS_CPLD==0) nBit <= nBit + 1; //следующий бит
/****************************************************************************/ always @ (posedge SCKIN or posedge SS_CPLD) //счетчик чтения if(SS_CPLD==1) rBit <= 5'b00000; else if (SS_CPLD==0) rBit <= rBit + 1; //следующий бит
/****************************************************************************/
always @ (posedge SCKIN or posedge SS_CPLD) //выбор регистра, запись/чтение begin if (SS_CPLD == 1) keyreg = 0; else begin if (nBit == 0) begin if (MOSIIN == 1) keyreg [0] = 1; end else if (nBit == 6) begin if (MOSIIN == 1) keyreg [1] = 1; end else if (nBit == 7) begin if (MOSIIN == 1) keyreg [2] = 1; //else //if (keyneg [0] == 1) keyneg [3] = 1; end if (rBit == 0) begin if (MOSIIN == 1) keyreg [0] = 1; end else if (rBit == 6) begin if (MOSIIN == 1) keyreg [1] = 1; end else if (rBit == 7) begin if (MOSIIN == 1) keyreg [2] = 1; else if (keyreg [0] == 1) keyreg [3] = 1; end end end
/****************************************************************************/ always @ (negedge SCKIN) if (SS_CPLD == 0) //data <= { data[14:0], 16'b00011110}; data <= {MOSIIN, data[15:1]}; /****************************************************************************/ /****************************************************************************/ //чтение always @ (negedge SCKIN or posedge SS_CPLD) begin if (SS_CPLD == 1) MISO = 0; else begin if(keyreg [0] == 1) //бит на чтение begin case (keyreg) 4'b1001: begin //reg00 case (nBit) 7: MISO = REG00[7]; 8: MISO = REG00[6]; 9: MISO = REG00[5]; 10: MISO = REG00[4]; 11: MISO = REG00[3]; 12: MISO = REG00[2]; 13: MISO = REG00[1]; 14: MISO = REG00[0]; default: MISO = 1'bz; endcase end 4'b1011: begin //reg00 case (nBit) 7: MISO = 0; 8: MISO = 1; 9: MISO = 0; 10: MISO = !(REGIN[0] & REGIN[1] & REGIN[2] & REGIN[3]); 11: MISO = REGIN[3]; 12: MISO = REGIN[2]; 13: MISO = REGIN[1]; 14: MISO = REGIN[0]; default: MISO = 1'bz; endcase end default: MISO = 1'bz; endcase end else MISO = 1'bz; end end /****************************************************************************/ /****************************************************************************/
/****************************************************************************/ /****************************************************************************/ //запись always @ (posedge SCKIN) begin if(SS_CPLD == 0) begin if(keyreg [0] == 0) //бит на запись begin case (keyreg) 4'b0000: begin //reg00 case (nBit) 8: REG00[7] = MOSIIN; 9: REG00[6] = MOSIIN; 10: REG00[5] = MOSIIN; 11: REG00[4] = MOSIIN; 12: REG00[3] = MOSIIN; 13: REG00[2] = MOSIIN; 14: REG00[1] = MOSIIN; 15: REG00[0] = MOSIIN; default: MISO = 1'bz; endcase end 4'b0100: begin //reg01 case (nBit) 8: REG01[7] = MOSIIN; 9: REG01[6] = MOSIIN; 10: REG01[5] = MOSIIN; 11: REG01[4] = MOSIIN; 12: REG01[3] = MOSIIN; 13: REG01[2] = MOSIIN; 14: REG01[1] = MOSIIN; 15: REG01[0] = MOSIIN; default: MISO = 1'bz; endcase end 4'b0010: begin //reg02 case (nBit) 8: REG02[7] = MOSIIN; 9: REG02[6] = MOSIIN; 10: REG02[5] = MOSIIN; 11: REG02[4] = MOSIIN; 12: REG02[3] = MOSIIN; 13: REG02[2] = MOSIIN; 14: REG02[1] = MOSIIN; 15: REG02[0] = MOSIIN; default: MISO = 1'bz; endcase /* //запись в LED if (REG02 == 8'b01000001) led <= REGIN[0]; else if (REG02 == 8'b01000010) led <= REGIN[1]; else if (REG02 == 8'b01000100) led <= REGIN[2]; else if (REG02 == 8'b01001000) led <= REGIN[3]; else if (REG02 == 8'b01010000) led <= !(REGIN[0] & REGIN[1] & REGIN[2] & REGIN[3]); */ end endcase end else MISO = 1'bz; end end /****************************************************************************/ /****************************************************************************/
endmodule Led должен смотреть за входящими данными, но я закоментил, и пока на Led выведен только чип селект. Прост к светодиоду подпояться легче, а вся плата - это субмодуль FMC, который стоит в модуле, который установлен в крейт. Шеф сказал что теперь схемотехники должны тоже делать программную часть, вот и сижу разбираюсь.
Сообщение отредактировал estel23 - Sep 25 2015, 09:28
|
|
|
|
|
Sep 25 2015, 07:03
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Ох.... Ну если вы схемотехник то вам должно быть знакомо понятие сдвиговые регистры... Код if(SS_CPLD==1) nBit <= 5'b00000; else if (SS_CPLD==0) else if не надо, это только синтезатор путает. Стандартная конструкция с асинхронным сбросом или установкой Код always @(posedge clk or posedge reset) if(reset == ....) .... else .... у вас CS выступает как асинхронный сброс и установка, потому просто else , если бы в блоке был и сброс и установка, else if был бы уместен для приоритетов, а так уберите... раздел Цитата //выбор регистра, запись/чтение очень сложно написан, у вас вообще одно и тоже по 10 раз в проекте делается вы представляете что когда вы пишите вот так Код case (nBit) 8: REG02[7] = MOSIIN; 9: REG02[6] = MOSIIN; 10: REG02[5] = MOSIIN; 11: REG02[4] = MOSIIN; 12: REG02[3] = MOSIIN; 13: REG02[2] = MOSIIN; 14: REG02[1] = MOSIIN; 15: REG02[0] = MOSIIN; вы получаете мультиплексор, который выбирает 1 бит, потом 2, потом 3. При этом у вас еще один мультиплексор прямо сразу по выбору case (keyreg). Иногда синтезатор понимает ваш хитрый план и сам ставить сдвиговые регистры, но иногда это остается мультиплексорами, съедает кучу ресурсов и очень медленно работает... А у вас их еще и 3 независимых может выйти... даже вернее 6, если не 9.... Если хотите можем совместно принести это в порядок по пунктам вам надо написать модуль SPI который читает и передает 1 байт. и дальше сделать просто принять байт, по принятому байту выбрать адрес чтения и записи, и еще раз принять или записать байт. как кстати вы определяете что в данном такте делается, читается или передается? Как я понимаю другого клока кроме SPI в проекте нет?
|
|
|
|
|
Sep 25 2015, 07:43
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 30-09-13
Пользователь №: 78 536

|
Цитата(Golikov A. @ Sep 25 2015, 11:03)  как кстати вы определяете что в данном такте делается, читается или передается? Как я понимаю другого клока кроме SPI в проекте нет? По данным с COM-порта я вижу какие данные и в какой регистр уходят и приходят, ну и сравниваю с показателями осцилла. Цитата(Golikov A. @ Sep 25 2015, 11:03)  Если хотите можем совместно принести это в порядок по пунктам вам надо написать модуль SPI который читает и передает 1 байт. и дальше сделать просто принять байт, по принятому байту выбрать адрес чтения и записи, и еще раз принять или записать байт. А нужно мне сделать обмен по SPI вот этого модуля (см. файл). Там на 18 странице показана структура, а на 30 странице - регистры. Я согласен что мой код кривоват, но он по крайней мере передает и принимает правильную информацию. На рисунке RW - запись/чтение, биты А1, А0 - выбор регистра.
Эскизы прикрепленных изображений
|
|
|
|
|
Sep 25 2015, 09:25
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 30-09-13
Пользователь №: 78 536

|
Цитата(Golikov A. @ Sep 25 2015, 13:00)  то есть все нормально и вы счастливы? Практически да, все норм кроме начала запуска, когда идет инверсный клок, я уже писал про это. http://electronix.ru/forum/index.php?s=&am...t&p=1367111Все время данные сдвигаются на один бит влево
Сообщение отредактировал estel23 - Sep 25 2015, 09:25
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|