_4afc_ 25 22 июня, 2021 Опубликовано 22 июня, 2021 · Жалоба А почему Gowin игнорирует конструкцию "initial" для выводов с постоянным состоянием? Добро-бы поругался - так нет, просто держит их в третьем состоянии не инициализируя - приходится в always запихивать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 23 июня, 2021 Опубликовано 23 июня, 2021 · Жалоба initial - несинтезируемо. Некоторые синтезаторы поддерживают, но это их личная инициатива. Для начальной инициализации удобнее и правильнее применять просто инициализаторы: logic slon = 1; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 23 июня, 2021 Опубликовано 23 июня, 2021 · Жалоба 1 hour ago, dxp said: initial - несинтезируемо. Некоторые синтезаторы поддерживают, но это их личная инициатива. Для начальной инициализации удобнее и правильнее применять просто инициализаторы: logic slon = 1; Всё хитрее Gowin не может заинитить только выходные ноги - другие регистры вроде может... Рабочие варианты в Gowin: module G_TOP ( output wire slon); assign slon=1; endmodule или как вы предложили module G_TOP ( output wire slon); reg slon_r=1; assign slon=slon_r; endmodule и даже такой работает module G_TOP ( output wire slon); reg slon_r; initial begin slon_r=1; end assign slon=slon_r; endmodule А вот следующие варианты выкидывает этот регистр и переводит вывод в Z module G_TOP ( output reg slon); initial begin slon=1; end endmodule или module G_TOP ( output reg slon=1); endmodule Вариант module G_TOP ( output slon); reg slon=1; endmodule не синтезируется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 11 23 июня, 2021 Опубликовано 23 июня, 2021 (изменено) · Жалоба А почему не написать ровно то, чего вы хотите получить? Хотите регистр с асинхронным ресетом - пишете always @(posedge clk, negedge rst_n) begin if (~rst_n) begin my_reg <= RST_VAL; end else begin my_reg <= my_reg_next; end end Если надо с синхронным ресетом - тогда так: always @(posedge clk) begin if (~rst_n) begin my_reg <= RST_VAL; end else begin my_reg <= my_reg_next; end end Зачем городить initial? Изменено 23 июня, 2021 пользователем Raven Incomplete Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 23 июня, 2021 Опубликовано 23 июня, 2021 · Жалоба 43 minutes ago, Raven said: А почему не написать ровно то, чего вы хотите получить? Зачем городить initial? Нет ноги ресета снаружи ПЛИС и ФАПЧи пока не используются А если загородить внутри ресет от счётчика - ему всё-равно надо от чего-то заинитится :) PS: initial из TOP убрал и все сигналы на ногах ПЛИС сделал wire. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 11 24 июня, 2021 Опубликовано 24 июня, 2021 · Жалоба Ну, не знаю, как можно без reset'а жить (IMHO). Если нет внешнего, можно соорудить внутренний - хотя бы тот же Power-On Reset. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 24 июня, 2021 Опубликовано 24 июня, 2021 · Жалоба 1 hour ago, Raven said: Ну, не знаю, как можно без reset'а жить (IMHO). Если нет внешнего, можно соорудить внутренний - хотя бы тот же Power-On Reset. Как соорудить внутренний Power-On Reset без инита регистра в конкретное значение? Внешний - есть, хоть и не нужен для таких простых микросхем как эта ПЛИС - POWERGOOD источника питания подключена к RECONFIG Т.е. при хорошем питании начнётся чтение битстрима, но эта нога будет всегда в 1 при работе прошивки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 24 июня, 2021 Опубликовано 24 июня, 2021 · Жалоба 32 минуты назад, _4afc_ сказал: Как соорудить внутренний Power-On Reset без инита регистра в конкретное значение? Инвертор, триггер, xor. Получаете единичный импульс в один такт независимо от состояния, ратягиваете на сколько нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Sam_ 0 13 августа, 2021 Опубликовано 13 августа, 2021 · Жалоба Quote Как соорудить внутренний Power-On Reset без инита регистра в конкретное значение? Использовать выход LOCK от модуля PLL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dinogo 0 16 августа, 2021 Опубликовано 16 августа, 2021 · Жалоба При запуске программы плата не делает, что должна Создается проект -> создается файл Verilog -> туда пишется код для мигания лампочки (код ниже) -> Нажимается "Place & Route -> Return All" -> Далее в программере выбирается подключенная плата, режим SRAM Program, где указывается файл с кодом. После запуска плата приходит в состояние как на фото и ничего больше не происходит. Плата GW1NS-UX2CLQ144C5/I4 module demo ( // Declare our demo module. clk_50M, // Declare 3 pins: clk_50M, rst_n, led. rst_n, // We will connect these pins to the led); // actual clock signal, reset signal and LEDs. input clk_50M; // Declare the clock pin as an Input signal. input rst_n; // Reset pin is also an Input, triggered by board restart or reset button. output[3:0] led; // LED is actually 4 discrete LEDs at 4 Output signals. Each LED Output is 1 bit. // So think of "output[3:0] led" as an Output array of 4 bits: "output led[0], led[1], led[2], led[3]" reg[3:0] led; // Declare led (4 bits), cnt (25 bits) and clk_led (1 bit) as Registers that reg[24:0] cnt; // can remember a value in volatile FPGA memory (similar to RAM). reg clk_led; // So led refers to a 4-bit Output signal that is remembered when it gets updated. // This block increments a counter and flips the clk_led bit on or off upon overflow. always@( // Code below is always triggered when these conditions are true... posedge clk_50M or // When the clock signal transitions from low to high (positive edge) OR negedge rst_n // When the reset signal transitions from high to low (negative edge) which ) begin // happens when the board restarts or reset button is pressed. if (!rst_n) begin // If board restarts or reset button is pressed... clk_led <= 1'b0; // Init clk_led and cnt to 0. "1'b0" means "1-Bit, Binary Value 0" cnt <= 25'd0; // "25'd0" means "25-bit, Decimal Value 0" end else begin if (cnt == 25'd2499_9999) begin // If our counter has reached its limit... clk_led <= ~clk_led; // Toggle the clk_led from 0 to 1 (and 1 to 0). cnt <= 25'd0; // Reset the counter to 0. end else begin cnt <= cnt + 25'd1; // Else increment counter by 1. "25'd1" means "25-bit, Decimal Value 1" end end end always@( // Code below is always triggered when these conditions are true... posedge clk_led or // When the clk_led register transitions from low to high (positive edge) OR negedge rst_n // When the reset signal transitions from high to low (negative edge) which ) begin // happens when the board restarts or reset button is pressed. if (!rst_n) begin // If board restarts or reset button is pressed... led <= 4'h1; // Init the 4-bit led value to 1. "4'h1" means "4-bit, Hexadecimal Value 1". end // Value 1 means ON, ON, ON, OFF for the 4 LEDs (see above) else begin led <= { led[2:0], led[3] }; // Else we shift the LEDs left 1 place (see above) end end endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladec 10 17 августа, 2021 Опубликовано 17 августа, 2021 · Жалоба 17 часов назад, Dinogo сказал: Создается проект -> создается файл Verilog -> туда пишется код для мигания лампочки (код ниже) -> Нажимается "Place & Route Проверьте подключены ли к проекту кроме Верилоговских у Вас файлы .sdc и .cst и верно ли их содержание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dinogo 0 18 августа, 2021 Опубликовано 18 августа, 2021 · Жалоба При выборе любого fs файла появляется данная ошибка. На тестовый проект ругается и на свой. Плата совпадает с надписью на кристалле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 18 августа, 2021 Опубликовано 18 августа, 2021 · Жалоба 53 минуты назад, Dinogo сказал: При выборе любого fs файла появляется данная ошибка. На тестовый проект ругается и на свой. Плата совпадает с надписью на кристалле. Пожалуйста, не дублируйте темы!!! На нарушайте правил форума! Ответил в параллельной ветке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 17 сентября, 2021 Опубликовано 17 сентября, 2021 · Жалоба Всем доброго дня! Намечается тенденция на трудности в поставках интеловских плисов, в связи с этим вопрос: Возможно ли заменить чем-нибудь из gowin 10M02DCV36 (BGA6x6, 0.5мм шаг), размер можно до 7х7мм. Ключевое требование - проект должен работать на 150МГц. Может кто сказать, на практике такие частоты достижимы в маленьких ПЛИС gowin? Понятно, что окончательно известны частоты будут только после сборки, но наверно у кого-то есть какие-то цифры? Хотел заменить на ICE5LP4K - по частотам проект тянет только на 75 МГц, т.е. в 2 раза ниже требуемого. Вторая замена - 10CL010YU256. Тут наверно попроще заменить, но проект тоже работает на 150мгц. Посоветуйте, стоит, исходя из практики работы с gowin, рассматривать их как возможную замену? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
warrior-2001 0 17 сентября, 2021 Опубликовано 17 сентября, 2021 · Жалоба 3 часа назад, alexPec сказал: Намечается тенденция на трудности в поставках интеловских плисов Добрый день! А по нашей информации, наоборот, намечается упрощение поставок продукции данного вендора! А сроки на то, что на TSMC делается, у всех большие. У Интела есть ПЛИС с собственных заводов - там сроки вполне приличные - 2-3 мес. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться