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

egorman44

Свой
  • Постов

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

  • Посещение

Весь контент egorman44


  1. Если у Вас есть тактовая достаточно большая что-бы мониторить состояние на линиях SDA, то посмотрите здесь: http://electronix.ru/forum/index.php?showt...mp;hl=egorman44 Соединял проц с eeprom через ПЛИС, файл прикрепил. Я так понял Вам просто проброс линии SDA необходим. bus_controller_bypass.v
  2. Здравствуйте товарищи и господа ! Подошел к такому серьезному этапу как выбор нового компьютера, только теперь необходимо смотреть на него в разрезе FPGA дизайна/симуляции. Мой довольно таки не молодой ноут с этими функциями справляется посредственно. Приходиться нервно курить пока идет синтез проекта и все последующие стадии в Vivado. Я так понимаю что основное внимание требует обратить на количество ОЗУ ? Поделитесь своими впечатлениями и опытом, а то по запросу system requirements во всех возможных комбинациях очень скудная информация, нашлось только Memory Recommendations от Xilinx. Платка у меня пока ZedBoard с Zynq на изучении.
  3. Я так полагаю что лучший способ работать с Identify это его связка с Synplify Synopsys. Синтезируете свой проект при помощи Synplify, он выплевывает *.prj (Synopsys FPGA project file). Далее загружаете этот файл в Synplify, настраиваете проект для Identufy(выбираете тактовый сигнал, сигналы срабатывания и что хотите собственно посмотреть). Компилирует проект для Identify. Конфигурируете им ПЛИС, открываете Identify, смотрите картинки оу gotcha Вы уже ответили
  4. Если с английским хорошо , можно почитать бумажку от sunburst design "Clock Domain Crossing (CDC) Design & Verification Techniques"
  5. проект мне достался готовый по наследству , там было уже объявлено 4 экземпляра. попросили переделать для 16 , и это меня Ооооченнь сильно смутило. Моя психологическая граница нарушилась когда я начал объявлять пятый субмодуль. Сам не представляю как я без этого раньше жил :laughing: Но что-то мне сильно подсказывает, что это далеко не последние открытие
  6. Всем здравствуйте ! Настала осень, пришло время переделывать проект . Жутко лень, но надо. И в принципе переделать надо немного , всего лишь увеличить количество субмодулей в проекте , с 4х до 16,ну и соединить их между собой, но прописывая все это дело руками, в голову пришла мысль, что любознательное человечество давно перешло от ручного труда к машинному, и думается что есть какой то способ решение данной задачки. Всем заранее благодарен.
  7. Synopsys Timing Constraints and Optimization User Guide вещает Static Timing Analysis Static timing analysis is a method of validating the timing performance of a design by checking all possible paths for timing violations under worst-case conditions. It considers the worst possible delay through each logic element, but not the logical operation of the circuit. ---- это такой метод для проверки временных характеристик дизайна, кот осуществляется проверкой всех возможных путей нарушения тайминга под наихудшими условиями. Этот метод рассматривает наихудшую задержку через каждый логический элемент, но не проверяет правильность функционирования вашего дизайна. Synopsys Timing Constraints and Optimization User Guide первая глава, рекомендую .
  8. посмотрите в iMPACT User Guide-> Appendix C->Command Line and Batch Mode Commands там есть примеры для цепочки устройств
  9. В командной строке прописываете : impact -batch *.cmd Содержимое файла " *.cmd " setMode -bscan setCable -p auto addDevice -p 1 -fpga xc3s700an -file *.bit program -p 1 quit В папке соответствено должен присутствовать битник *.bit и будет Вам счастье
  10. http://electronix.ru/forum/index.php?showtopic=116325 в теме есть ссылка на архив, там приемник передатчик UART , как говорил автор сообщения "Заработало с пол тычка."
  11. вполне, мне важен только сам факт определения фронта. :) самое главное, это не пропустить его
  12. Всем здравствуйте! Нахожусь на стадии наращивания проекта для Spartan3AN. Написал пару изменений для него. При компиляции возникает вышеуказанная ошибка (ERROR:Place:1138 - Automatic clock placement failed...). Начал разбираться где, расточительно использовались ресурсы глобального клокового древа и наткнулся на замечательный модуль, в который как оказывается приходит аж 4 клока, не считая системного и каждый из них тактирует счетчик, для измерения своей частоты, что то вроде: ... always @(posedge CLK24MHZ) if (start_mt) freq_24_cnt <= freq_24_cnt+1; else freq_24_cnt<=0; always @(posedge CLK27MHZ) if (start_mt) freq_27_cnt <= freq_27_cnt+1; else freq_27_cnt<=0; ... Частоты в проекте у меня следующие: системная - 51.2 МГц, остальные 27, 25, 24 и 8 МГц. Я вот что думаю, ведь могу же я с системной частотой 51.2 МГц определить нарастающие фронты для клоков 25, 24 и 8 МГц соответственно, и посчитать их количество за определенный временной интервал?! а вот что делать с 27 МГц ? так и оставить или попробовать увеличить системную тактовую частоту ? Как в этом случае будет правильнее поступить .
  13. ЭЭэээ , извиняюсь конечно, что не выложил первую часть кода, но я подумал , что она сама собой подразумевающаяся и захламлсять пространство, ну очень уж не хотелось вот так , пойдет ? ////////////////////////////////////////////////////////////////////////////////// module I2C_bypassSM( input rst_n, input sys_clk, input SCL_IN, inout SDA1, inout SDA2, output SCL_OUT ); // ---------------------------- // Shifting SDA1 and SDA2 into // a sync circuit // ---------------------------- reg [2:0] SDA1_reg; reg [2:0] SDA2_reg; always @(posedge sys_clk) begin if(rst) begin SDA1_reg <= 0; SDA2_reg <= 0; end else begin SDA1_reg <= {SDA1_reg[1:0],SDA1}; SDA2_reg <= {SDA2_reg[1:0],SDA2}; end end //----------------------------- // FSM for driving tri-state // outputs //----------------------------- parameter IDLE = 2'b00, SDA1_OUT_EN = 2'b01, SDA2_OUT_EN = 2'b10; reg [1:0] state, next; reg SDA2_output_en; // a drive signal for tri-state buffer reg SDA1_output_en; // a drive signal for tri-state buffer always @(posedge sys_clk, posedge rst_n) begin if (rst_n) state <= IDLE; else state <= next; end always @(*) begin next = 'bx; SDA2_output_en = 1'b0; SDA1_output_en = 1'b0; case(state) IDLE: begin if ((SDA1_reg[2]) && (!SDA1_reg[1])) // если на SDA1 1->0 next = SDA2_OUT_EN; // делаем SDA2 выходом else if ((SDA2_reg[2]) && (!SDA2_reg[1])) // если на SDA2 1->0 next = SDA1_OUT_EN; // делаем SDA1 выходом else next = IDLE; end SDA2_OUT_EN: begin SDA2_output_en = 1'b1; if((!SDA1_reg[2]) && (SDA1_reg[1])) // ждем переход на SDA1 0->1 next = IDLE; // чтобы отпустить SDA2 else next = SDA2_OUT_EN; end SDA1_OUT_EN: begin SDA1_output_en = 1'b1; if ((!SDA2_reg[2]) && (SDA2_reg[1])) // ждем переход на SDA2 0->1 next = IDLE; // чтобы отпустить SDA1 else next = SDA1_OUT_EN; end endcase end // drive output signals assign SDA1 = (SDA1_output_en) ? (1'b0) : (1'bz); assign SDA2 = (SDA2_output_en) ? (1'b0) : (1'bz); endmodule
  14. и у меня почему-то что-то подобное получается. :laughing: always @(*) begin next = 'bx; SDA2_output_en = 1'b0; SDA1_output_en = 1'b0; case(state) IDLE: begin if ((SDA1_reg[2]) && (!SDA1_reg[1])) // если на SDA1 1->0 next = SDA2_OUT_EN; // делаем SDA2 выходом else if ((SDA2_reg[2]) && (!SDA2_reg[1])) // если на SDA2 1->0 next = SDA1_OUT_EN; // делаем SDA1 выходом else next = IDLE; end SDA2_OUT_EN: begin SDA2_output_en = 1'b1; if((!SDA1_reg[2]) && (SDA1_reg[1])) // ждем переход на SDA1 0->1 next = IDLE; // чтобы отпустить SDA2 else next = SDA2_OUT_EN; end SDA1_OUT_EN: begin SDA1_output_en = 1'b1; if ((!SDA2_reg[2]) && (SDA2_reg[1])) // ждем переход на SDA2 0->1 next = IDLE; // чтобы отпустить SDA1 else next = SDA1_OUT_EN; end endcase end // drive output signals assign SDA1 = (SDA1_output_en) ? (1'b0) : (1'bz); assign SDA2 = (SDA2_output_en) ? (1'b0) : (1'bz); endmodule в симуляторе работает такое ,а вот в железку не встает . SDA2 всегда 0 .
  15. очень бы хотелось, но плата вне зоны досягаемости, боюсь еще даже не появилась на свет, и работать с ней придется по teamviewer'y Вообщем получилась следующая фиговина
  16. :a14: Господа огромное спасибо всем ответившим. Сижу леплю. По мере возникновения вопросов буду их задавать .
  17. я то думал, что вообще дело плевое, обозвал порты соединил и все замечательно работает ... но не тут, то было ... откуда собственно взять этот управляющий сигнал DIRECTION_CONTROL ?
  18. Имеется у меня микросхема№1 и микросхема№2, обе имеют интерфейс I2C, между ними spartan3 , хотелось просто пробросить линию SDA через ПЛИС. Да на самом деле синтезатор ругается :
  19. вот есть у меня топ модуль: module top( .................. inout PORT1, inout PORT2, ................... ); Хотелось просто соеденить PORT1 и PORT2. Собственно уже нашел в стандарте 2005 глава 7.6 Bidirectional pass switches использовал tran, синтезировалось правильно
  20. Здравствуйте! Имеется два порта inout, которые должны быть просто соединены проводом , т.е. ПЛИС просто осуществляет транзит двунаправленной линии. как это примерно должно выглядеть?
  21. А есть еще какие-нибудь/любые идеи как можно отключить readback ? и почему не позволяет заблочить readback . после конфигурации ПЛИСины, всегда получается сделать readback
×
×
  • Создать...