disel 0 30 января, 2006 Опубликовано 30 января, 2006 · Жалоба День добрый, есть такая проблема. В процессе разработки схемы часто начинаешь путаться в различных версиях прошивок ПЛИС. Хочется в устройстве сделать регистр, из которого можно было бы читать дату компиляции проекта. Причем дата должна заноситься автоматически в виде константы, поскольку руками все равно когда-нибудь да забудешь. Никак не могу придумать. Кто как решает подобные проблемы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maksya 0 30 января, 2006 Опубликовано 30 января, 2006 · Жалоба День добрый, есть такая проблема. В процессе разработки схемы часто начинаешь путаться в различных версиях прошивок ПЛИС. Хочется в устройстве сделать регистр, из которого можно было бы читать дату компиляции проекта. Причем дата должна заноситься автоматически в виде константы, поскольку руками все равно когда-нибудь да забудешь. Никак не могу придумать. Кто как решает подобные проблемы? Да обычно этим САПР занимается. Зачем в проект то зашивать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 222 31 января, 2006 Опубликовано 31 января, 2006 · Жалоба Да обычно этим САПР занимается. Зачем в проект то зашивать? Как минимум для того, чтобы софт мог понять, с какой версией прошивки он работает. Так что вопрос остается открытым. Можно, конечно, взять что-нибудь вроде sed'a с компанией и натравливать его на исходники перед началом компиляции... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 31 января, 2006 Опубликовано 31 января, 2006 (изменено) · Жалоба Да обычно этим САПР занимается. Зачем в проект то зашивать? Как минимум для того, чтобы софт мог понять, с какой версией прошивки он работает. Так что вопрос остается открытым. Можно, конечно, взять что-нибудь вроде sed'a с компанией и натравливать его на исходники перед началом компиляции... Вы слишком многого хотите от языка не программирования. shell+sed/awk,по-моему, лучшее решение. Там и дату можно получить в разных форматах. У Xilinx есть, по-моему, в bitgen опция userid. Ее можно использовать.Тем более, что из одного и того же кода можно получить разные прошивкив зависимости от параметров разводки. Изменено 31 января, 2006 пользователем andrew_b Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maksya 0 31 января, 2006 Опубликовано 31 января, 2006 · Жалоба Скажем в Квартусе дата/время заносится автоматически в report'ы проекта... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 31 января, 2006 Опубликовано 31 января, 2006 · Жалоба День добрый, есть такая проблема. В процессе разработки схемы часто начинаешь путаться в различных версиях прошивок ПЛИС. Хочется в устройстве сделать регистр, из которого можно было бы читать дату компиляции проекта. Причем дата должна заноситься автоматически в виде константы, поскольку руками все равно когда-нибудь да забудешь. Никак не могу придумать. Кто как решает подобные проблемы? Когда я делаю встроенный микроконтроллер, мой самодельный ассемблер делает файл прошивки и помещает его в верилог-файл микроконтроллера. В самом конце файла он ищет строку что-то типа "assign data = ....." и заменяет ее на строку с текущей датой. А эта строка потом читается как код и дата прошивки. В файле микроконтроллера, там где инициализация памяти, компилятор пишет как комментарии дату, название асм. файла и пр. параметры. Материалы об этом я сдал в редакцию, так что через месяц статья выйдет. А дата и версия прошивки - дело важное. Опыт показывает, что когда программисты начинают путаться в версиях, то отладка прибора в целом практически останавливаются. Поэтому целесообразно, чтобы GUI сразу выводила на экран параметры модулей, и в том числе дату прошивки. Удачи! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 222 31 января, 2006 Опубликовано 31 января, 2006 · Жалоба Вы слишком многого хотите от языка не программирования. shell+sed/awk,по-моему, лучшее решение. Там и дату можно получить в разных форматах. Под компанией к sed я и подразумевал shell, cut и прочие textutils. :) У Xilinx есть, по-моему, в bitgen опция userid. Ее можно использовать.Тем более, что из одного и того же кода можно получить разные прошивкив зависимости от параметров разводки. Userid - это, afair, функция для идентификации прошивки через JTAG. Т.е. так просто до этой информации не доберешься. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
disel 0 31 января, 2006 Опубликовано 31 января, 2006 · Жалоба Кажется затронул интерестную тему :) Вы слишком многого хотите от языка не программирования. shell+sed/awk,по-моему, лучшее решение. Там и дату можно получить в разных форматах. У Xilinx есть, по-моему, в bitgen опция userid. Ее можно использовать.Тем более, что из одного и того же кода можно получить разные прошивкив зависимости от параметров разводки. Я к сожалению не знаю что такое "sed/awk". Что это? Может быть это через tcl-скрипты можно сделать? Я с ними правда не работал. С userid интерестная идея. А он для каждой прошивки как то автоматически компилятором генерится, или руками где-то в опциях задается? Скажем в Квартусе дата/время заносится автоматически в report'ы проекта... report - это окончательный результат компиляции, а дата должна заноситься раньше. Материалы об этом я сдал в редакцию, так что через месяц статья выйдет. А в какое журнал? Хочется прочитать. А может быть это на verilog'е можно сделать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 222 31 января, 2006 Опубликовано 31 января, 2006 · Жалоба Кажется затронул интерестную тему :) Я к сожалению не знаю что такое "sed/awk". Что это? Это стандартные утилиты для обрабоки текстовой информации. Sed - Stream EDitor. Поищите в google. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 1 февраля, 2006 Опубликовано 1 февраля, 2006 · Жалоба Кажется затронул интерестную тему :) А в какое журнал? Хочется прочитать. А может быть это на verilog'е можно сделать? Если бы Вы посмотрели карточку участника конференции, нашли бы мой сайт, там раздел статьи и тд. то и вопрос не пришлось бы задавать. Но я Вас приглашаю: www.iosifk.narod.ru. Статья "Микропроцессор своими руками - 3", Журнал "Компоненты и Технологии", ожидается №2 или 3, как там будет место. Как это же сделать средствами верилога - я не ставил себе такой задачи. Наоборот, я предпочитаю делать софт-инструменты, которые сами генерят верилог-файлы. Часть из них описана в статьях. Удачи! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pyadvychuk 0 3 февраля, 2006 Опубликовано 3 февраля, 2006 · Жалоба Может быть это через tcl-скрипты можно сделать? Я с ними правда не работал. вот 101% :) видел в инете скрипт tcl который может возвращать в файл текущее время и дату. в понедельник могу на работе посмотреть.. кажися я его даже качнул. имея его - все просто (vhdl образ мышления): 1 вставляешь батник, запускающий этот скрипт, перед началом синтеза 2 в каком-нибудь пакете обьявляешь константу типа std_logic_vector ( у скрипта выход в таком формате) 3 пишешь функцию, которая читает из файла твою дату и заносит в эту константу. ЗЫ щас тута начнут, может, выступать по поводу синтезабельности файловых операций.. так вот - не слушайте. По крайней мере синплифай нормально это дело хавает. главное чтобы все файловые операции были времени синтеза а не выполнения ЗЗЫ на крайняк, если скрипт не найдется, что мешет вам написать мал. прожку на cpp которая будет работать заместо скрипта Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pyadvychuk 0 3 февраля, 2006 Опубликовано 3 февраля, 2006 · Жалоба и вдогонку.. еще легче ваще весь пакет с указанной константой сгенерить програмно.. fprintf(ffp,"library ieee;\nuse ieee.std_logic_1164.all;\n"); fprintf(ffp,"use ieee.std_logic_unsigned.all;\n\n"); fprintf(ffp,"entity %s is\n",basename); fprintf(ffp,"\tport( address : in std_logic_vector(7 downto 0);\n"); fprintf(ffp,"\t\tclk : in std_logic;\n\t\tdout : out std_logic_vector(15 downto 0));\n\tend;\n\n"); fprintf(ffp,"architecture v1 of %s is\n\n", basename); fprintf(ffp,"\tconstant ROM_WIDTH: INTEGER:= 16;\n"); fprintf(ffp,"\tconstant ROM_LENGTH: INTEGER:= 256;\n\n"); fprintf(ffp,"\tsubtype rom_word is std_logic_vector(ROM_WIDTH-1 downto 0);\n"); fprintf(ffp,"\ttype rom_table is array (0 to ROM_LENGTH-1) of rom_word;\n\n"); fprintf(ffp,"constant rom: rom_table := rom_table'(\n"); for(i = 0; i < PROGRAM_COUNT-1; i++){ fprintf(ffp, "\t\""); for(j = 15; j >= 0; j--) fprintf(ffp, "%d", (program_word>>j) & 1); //print binary fprintf(ffp, "\",\n"); } fprintf(ffp, "\t\""); for(j = 15; j >= 0; j--) fprintf(ffp, "%d", (program_word>>j) & 1); //print binary fprintf(ffp, "\");\n\n"); fprintf(ffp,"begin\n\nprocess (clk)\nbegin\n", basename); fprintf(ffp,"\tif clk'event and clk = '1' then\n\t\tdout <= rom(conv_integer(address));\n"); fprintf(ffp,"\tend if;\nend process;\nend v1;\n"); вот.. нашел даже какой то пример.. генерит, по всей видимости, ПЗУ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Styv 0 7 февраля, 2006 Опубликовано 7 февраля, 2006 · Жалоба Может быть это через tcl-скрипты можно сделать? Я с ними правда не работал. вот 101% :) видел в инете скрипт tcl который может возвращать в файл текущее время и дату. в понедельник могу на работе посмотреть.. кажися я его даже качнул. имея его - все просто (vhdl образ мышления): 1 вставляешь батник, запускающий этот скрипт, перед началом синтеза 2 в каком-нибудь пакете обьявляешь константу типа std_logic_vector ( у скрипта выход в таком формате) 3 пишешь функцию, которая читает из файла твою дату и заносит в эту константу. ЗЫ щас тута начнут, может, выступать по поводу синтезабельности файловых операций.. так вот - не слушайте. По крайней мере синплифай нормально это дело хавает. главное чтобы все файловые операции были времени синтеза а не выполнения ЗЗЫ на крайняк, если скрипт не найдется, что мешет вам написать мал. прожку на cpp которая будет работать заместо скрипта Привет Всем! Дак как на счет понедельника, Ведь уже вторник, а ответа все и нету? Да тема однако очень актуальная для многих (на мой взгляд). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
id_gene 0 7 февраля, 2006 Опубликовано 7 февраля, 2006 · Жалоба tcl>> clock seconds bash>> date +%S perl >> $time_const = time(); возвращают время в секундах. можно в любом формате. а) tcl скрипт воткнуть в вашу тулзу и подсовывать в параметр компиляции - чтобы, например, переопределять параметр или дифайн в ХДЛ - если поддерживает тулза. еще можно тиклом переписать ваш хдл файл. б) perl/shell скрипт или срр программа - натравливать перед компиляцией, чтобы переписать те же константы в файле вам сваять какой-нибудь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
disel 0 7 февраля, 2006 Опубликовано 7 февраля, 2006 · Жалоба 2 lutik: спасибо, за идеи. В продолжение мысль: включить его в автозагрузку. А можно в автозагрузку включить bat-файл, который делает текстовый файл с датой и временем. А в VHDL-модуле этот файл читается и генерит дату. Это избавляет от необходимости что-то делать ручками перед началом синтеза. Правда тоже есть недостатки. Хочется чтобы этот файл должен быть доступен из разных проектов и разным пользователям. Наверное можно через всякие переменные среды сделать. Правда автозагрузку при переустановки системы можно позабыть:) 2 id_gene: а можно это tsl/perl/bash скрипты как нибудь с quartus`ом связать? Ну чтобы с запуском компиляции атоматически еще и этот скрипт запускался? Спасибо за помощь! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться