RadiatoR 2 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 4 minutes ago, MrGalaxy said: Можно глупый вопрос? Оказался абсолютно не глупым, а даже очень рабочим. Спасибо, заработал. Я предполагал, что изначально регистры обнулены или в в крайнем случае не определены. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 6 minutes ago, MrGalaxy said: RadiatoR, Можно глупый вопрос? Вот так не пробовали: reg [4 : 0] delay = 4'b0000; ? Глупый ответ - правильно так: reg [4:0] delay = 5'b0; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 3 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 4 minutes ago, RadiatoR said: С ними проще - железо детерминировано и цепи сброса сформированы. Так это железо же не с неба свалилось, оно тоже описывается на тех же языках, на которых которых идёт разработка на FPGA. Принцип простой - регистрируется внешнее событие, и соответственно настройкам, отрабатывает внутренняя логика сброса. В FPGA можете зарегистрировать внешнее событие? Внутреннее событие? Создать логику, которая сработает в зависимости от настроек и внешнего события? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба Только что, blackfin сказал: Глупый ответ - правильно так: reg [4:0] delay = 5'b0; Да, ступил, там же 5 разрядоФФ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 4 minutes ago, iosifk said: Я же написал "холодный сброс" и "горячий сброс". Это я понял =), просто у меня логика фпга маленькая и холодный сброс он же горячий, делает одно и то же. То есть ресет сбрасывает все используемые регистры, счетчики, все от чего зависит логика. Глубже только переконфигурация. 8 minutes ago, iosifk said: А что касается " нечего скормить ModelSim в качестве описания этого SPI", то на несинтезируемых конструкциях имитатор SPI делается за 10 мин. Хотя я уверен, что модель SPI производитель предоставляет. Ведь даже изготовители микросхем памяти дают модели памяти для совместной симуляции проекта. Допускаю, но накидывать функционал SPI и шины для него я не хотел, да и зачем.. А на счет готовых моделей не искал, даже и не думал в эту стороны. Спасибо за наводку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 4 минуты назад, RadiatoR сказал: Это я понял =), просто у меня логика фпга маленькая и холодный сброс он же горячий, делает одно и то же. То есть ресет сбрасывает все используемые регистры, счетчики, все от чего зависит логика. Глубже только переконфигурация. Если у вас сброс приходит в ПЛИС, то вот как это делает ксайлинкс //----------------------------------------------------------------------------- // // Copyright (c) 2008 Xilinx Inc. // // Project : Programmable Wave Generator // Module : reset_bridge.v // Parent : Various // Children : None // // Description: // This is a specialized metastability hardener intended for use in the // reset path. The reset will assert ASYNCHRONOUSLY when the input reset is // asserted, but will deassert synchronously. // // In designs with asynchronous reset flip-flops, this generates a reset // that can meet the "recovery time" requirement of the flip-flop (be sure // to enable the recovery time arc checking - ENABLE=reg_sr_r). // // In designs with synchronous resets, it ensures that the reset is // available before the first valid clock pulse arrives. // // Parameters: // None // // Notes : // // Multicycle and False Paths, Timing Exceptions // A tighter timing constraint should be placed between the rst_meta // and rst_dst flip-flops to allow for meta-stability settling time // `timescale 1ns/1ps module reset_bridge ( input clk_dst, // Destination clock input rst_in, // Asynchronous reset signal output reg rst_dst // Synchronized reset signal ); //*************************************************************************** // Register declarations //*************************************************************************** reg rst_meta; // After sampling the async rst, this has // a high probability of being metastable. // The second sampling (rst_dst) has // a much lower probability of being // metastable //*************************************************************************** // Code //*************************************************************************** always @(posedge clk_dst or posedge rst_in) begin if (rst_in) begin rst_meta <= 1'b1; rst_dst <= 1'b1; end else // if !rst_dst begin rst_meta <= 1'b0; rst_dst <= rst_meta; end // if rst end // always endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 7 minutes ago, iosifk said: Если у вас сброс приходит в ПЛИС, то вот как это делает ксайлинкс Это гвозди от другой стенки.. :) Читайте исходный пост: On 1/31/2017 at 10:14 AM, verali said: Хочу проверить работоспособность "железа" путем автоматического сброса - допустим после 100 клоков сигнал reset переходит из 0 в 1 и далее никак не изменяется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 14 minutes ago, blackfin said: Читайте исходный пост Это я немного криво описал ситуацию. Она не как у ТС. У меня просто была необходимость начального сброса внутренними средствами. Оказалось достаточно было определить начальное состояние регистров. До этого почему-то думал, что это будет работать только в симуляции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 6 minutes ago, RadiatoR said: Это я немного криво описал ситуацию. Зато узнали много нового - как звонить в домофон, как стучать в дверь, сколько времени у профессионала занимает написание SPI.. :) Еще бы немного потерпели, и узнали бы как правильно грести на байдарке и как правильно играть в шахматы.. :) Потом бы узнали, чем отличаются профессионалы от любителей.. :) Да много бы чего еще узнали.. Ну, кроме ответа на свой простой вопрос.. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба да уж) Да и ладно, разобрался - уже хорошо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 34 минуты назад, blackfin сказал: Это гвозди от другой стенки.. :) Да нет, я все пишу как надо. А надо так: по исходному, все ресурсы ПЛИС должны быть в состоянии "сброс". Далее, от микроконтроллера в ПЛИС должен приходить сигнал "Работа/сброс" и при старте микроконтроллера этот сигнал должен быть тоже в состоянии "сброс", это можно сделать хотя бы подпорами вывода микроконтроллера. После инициализации софта микроконтроллер должен дать сигнал "Работа", который и запустит ПЛИС в рабочий режим. А вот из ПЛИС в микроконтроллер должен приходить сигнал "ошибка", а в регистре "статуса" чтобы можно было прочесть коды ошибок. Вот тогда ПЛИС можно будет перезапустить или даже перезагрузить и устройство возобновит работу. В том модуле, что я привел, сигнал "reset" и должен приходить от микроконтроллера и потом он должен привязываться к клоку. А если сделать вот так: reg [4:0] delay = 5'b0; то это работает только один раз при начале работы. А что будет делать устройство, если словит по SPI хотя бы один дребезг на фронте клока? "Прощай, прощай"... Выключать питание и грузить заново? Отлично, рекламации, возврат, судебный иск, увольнение - выбирайте что хотите. Так что не будем про "гвозди". Я эти дела проходил, результат запомнил навсегда. Он, если кто не знает, в "Записках инженера", глава о "Сбросе"... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 5 minutes ago, iosifk said: Далее, от микроконтроллера в ПЛИС должен приходить сигнал "Работа/сброс"... Так и есть (будет). Но сейчас только проектируется. И чтобы не тыкать каждый раз ресет после переконфигурации я решил сделать такой подход. Кстати, в логах я нашел следующее: @W: FX1039 :"d:\dropbox\sources\codes\libraries\verilog\startup.v":8:1:8:6|User-specified initial value defined for instance startup.delay[4:0] is being ignored. тем не менее ресет работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 29 июля, 2020 Опубликовано 29 июля, 2020 · Жалоба On 1/31/2017 at 4:14 PM, verali said: Первая идея была использовать счетчик, который, досчитывая до 100, ставит сигнал reset в 1. Но, этот счетчик со временем обнулится, и сброс произойдет снова, что мне не подходит. Сделайте еще один регистр, который меняет значение после reset, флаг того что действие было произведено. Исходный reset устанавливается только, если флаг еще не был установлен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться