Перейти к содержанию
    

Nevox

Участник
  • Постов

    23
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Nevox

  • Звание
    Участник
    Участник

Посетители профиля

738 просмотров профиля
  1. Добрый день! Уже не один день пытаюсь разобраться со схемой PoE в своем устройстве. Есть устройство с PoE и микросхемой TPS23753APW от Texas Instruments. Собрал эту схему согласно отладочной платы для 5 В ( https://www.ti.com/lit/ug/slvu315a/slvu315a.pdf?ts=1614250496506 ). Устройство, по задумке, должно питаться как от лабораторного блока питания, так и по Ethernet. На схеме разъем X2 - обычный разъем, куда я подключаю провода с кабеля Ethernet. 24V_IN - внешний источник напряжения (лабораторный блок питания), а по Ethernet питаю от роутера Microtik Hex PoE. В первом варианте этой схемы у меня не было разделения земли VSS и земли GND_IN между собой, и роутер отказывался видеть мое устройство и выдавать ему напряжение, но я мог принудительно через роутер запитать устройство (там правда и с напряжением по выходу трансформатора не так все гладко, но об этом позже). Потом я понял, что все-таки земли эти разделять надо и в итоге разделил их, как на моей схеме (в отладке тоже есть разделения, но я почему-то сразу этого не увидел). И. ура, роутер стал определять устройство, даже выдает напряжение 48 В. Но теперь перестал работать трансформатор и сама микросхема TPS23753APW начала очень сильно греться. Уже всю голову сломал, в чем может быть проблема? Пробовал паять конденсатор 1000pF между землями, так же паял стабилитрон (такой же как VD6) между VSS и GND_IN, но ничего не помогает. ОТ лабораторного блока питания 24_IN все работает. Там правда на выходе после диода 3.6 В постоянки почему-то, а перед диодом 5 В переменки, но об этом потом (возможно делители надо поменять как-то). Помогите разобраться просто с включением микросхемы. PoE.pdf
  2. Ну так что? разобрались в чем проблема? у меня просто похожая ситуация, и режим Lead-Acid. Тоже батарея не заряжается, хотя горят обе лампочки, как написано в даташите. Если кому интересно или кто-то хочет помочь, то могу скинуть схему.
  3. Как это сделать? я делаю автомат в Active-HDL, у выбираю системную частоту. По ней все и происходит,как игнорировать ее и сделать счетчик по другой?
  4. У меня такая проблема: У меня есть частота конечного автомата, она равна 1MHZ, и есть частота внутри автомата(частота SCK = 921 KHZ), и когда я делаю счетчик внутри автомата,то он у меня считает по частоте автомата 1MHZ, что вполне логично, но мне надо,чтобы он считал по частоте внутренней 921 KHZ, как это сделать?
  5. always @(posedge SCK) begin switch (State); begin case wa_it: //тут должны быть константы begin if(RES&&!CS) State <= ta_ke; end case ta_ke: //тут должны быть константы begin if(counterdac >=16) State <= sa_ve; end case sa_ve: //тут должны быть константы begin end end end Вот я написал,что смог.А какие константы ,например? И какие регистры надо объявлять с самого начала? Не понимаю конструкцию автомата.
  6. а можно поподробнее рассказать откуда конкретно скачать?
  7. Ну я их еще ни разу не писал. Не знаю с чего начать. Знаю,что есть автоматы Мура и Мили.Конечный автомат меняет свое состояние в зависимости от условий,которые ему сам поставишь. А как на шариках с логикой в Active-HDL все это сделать я не знаю. Мне бы пример со счетчиком и регистрами, а то в интернете одни простые автоматы.
  8. Давайте пожалуйста без ссор.Как раз ваши предложения я не игнорировал, просто у меня есть проблемы с конечными атвоматами. Просто прошу помочь с кодом...
  9. Если бы я знал,как написать, я бы сюда не писал... то,что мне нужно написать я знаю, я не знаю как...
  10. У меня все работает по гибридной шине ISA и SPI одновременно. По SPI я просто посылаю данные вместе с клоком, после отправки ни клока ни данных нет. A - это адрес,он выставляется по другой шине. Знаю,что основа, но я начинал с простеньких прошивок.Сейчас у меня как раз проект на конечный автомат,как они работают я знаю,но программно еще не реализовывал.
  11. Так.. Начнем по порядку) Благодарен за ответы. Отвечаю на вопросы : to iosifk : С конечными автоматами еще не работал, собираюсь в скором будущем. Посмотрю на вашем сайте,если они там есть. to Golikov A. : Спасибо,ваша строчка помогла,получилась картинка(приложенная).Осталось проверить чтение и правильное разбиение по регистрам. to Tiro : Данные идут пачками, когда нужно мне. Старшим битом вперед. SPI стандартный. В альтеру входит клок с SPI (SCK), и еще сторонний кварц. SCK идет в дальнейшем на ЦАП.Чтение линией IOW. Вот картинка - http://s3.hostingkartinok.com/uploads/imag...f109acf9b8d.png Вот весь мой код, вдруг совсем галимый,если не сложно,то поправьте) module module1(DAT,A,IOR,IOW,CS,MISO,MOSI,SCK,SS,CLK,CLKADC,CLKDAC,RES,DTAO); //CLK - внешний кварц 16.384 MHZ input wire IOR,IOW,CS,MOSI,SCK,SS,CLK,RES; input wire [4:0] A; inout wire [7:0] DAT; output reg [1:0] CLKADC; output wire CLKDAC,MISO,DTAO; reg [15:0] counter; reg [15:0] counterdac; reg [7:0] D; initial D = 8'b0; reg ASEL; initial ASEL = 1'b0; reg BSEL; initial BSEL = 1'b0; reg CSEL; initial CSEL = 1'b0; reg DSEL; initial DSEL = 1'b0; reg ECHO; initial ECHO = 1'b0; reg SERENA; initial SERENA = 1'b0; reg [15:0] SPIDAT; initial SPIDAT = 16'b0; // - - - - - - - - - - - - - - - - - - - - - - - - БЛОК ДЛЯ КЛОКА initial begin counter <= 0; counterdac <= 0; end always @(posedge CLK or negedge RES) begin if (!RES) begin counter <= 16'b0; CLKADC[1] <= 1'b0; CLKADC[0] <= 1'b0; end else begin counter <= (counter==15) ? 16'b0 : counter + 1; CLKADC[1] <= (counter==15) ? 1'b1 : 1'b0; // Деление на 16 до частоты 1 MHZ CLKADC[0] <= (counter[2]) ? 1'b1 : 1'b0; // Деление на 2 до частоты 8 MHZ end end always @(posedge SCK or negedge RES) begin if (!RES) begin counterdac <= 16'b0; end else begin counterdac <= counterdac + 1; end end assign CLKDAC = SCK; // - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - БЛОК инициализации модуля always @(negedge IOR or negedge IOW) case (A) 4'h0: D <= 8'h60; 4'h1: D <= 8'h28; 4'h2: D <= 8'h4; 4'h5: D <= 8'h8; 4'h8: D <= {2'b0,DSEL,CSEL,BSEL,ASEL,ECHO,SERENA}; 4'h9: D <= SPIDAT[7:0]; 4'hA: D <= SPIDAT[15:8]; default: D = 8'b00000000; endcase always @(posedge SCK) SPIDAT <= {SPIDAT[14:0],MOSI}; assign DTAO = MOSI; endmodule
  12. а можно конретнее про флаг? я просто в active-hdl моделирую. Задал в модуляторе такое - always #540 SCK=~SCK; always #30 CLK=~CLK; always #540 MOSI=~MOSI; И по SPIDAT начинается сдвиг,но неправильный. Если шлются одни единицы то должен быть 0 3 7 и тд, а у меня вот что : http://s6.hostingkartinok.com/uploads/imag...68ce31abde7.png
  13. always @(posedge SCK) if (!CS) SPIDAT <= {MOSI,SPIDAT[15:0]}; assign DTAO = SPIDAT[15:0]; вот я написал так, оно не работает...
  14. Здравствуйте. Есть такая проблема с написанием кода. Есть шина SPI, по которой идут данные по ножке MOSI.16 бит данных идут побитово. Мне надо эти данные распихать в два регистра по 8 бит и выпустить наружу. Насколько я понимаю нужно использовать оператор сдвига.Клок присутствует. Как это лучше всего написать на языке VERILOG? Микруха Altera EPM3064.
×
×
  • Создать...