Jump to content
Трофим

Как задать исходные состояния ЗУ в проекте

Recommended Posts

Здравствуйте.

Работаю с ПЛИС XILINX Virtex-6 XC6VLX240T-1FFG1156 FPGA. Не знаю как задать исходные состояния запоминающего устройства в проекте. В общем, есть два файла на ассемблере (текстовые с 16-ричными кодами) их нужно загрузить в память ПЛИС, т.е. инициализировать исходные состояния памяти. Есть информация, что это должно быть где-то в Chipscope, но я не могу найти это там.

Кто-нибудь сталкивался с подобной проблемой и как решить?

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

Создай в Vivado ROM и укажи файл инициализации для задания начального состояния. Можно и RAM.

Share this post


Link to post
Share on other sites
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

А до этого ты в ISE работал или в чём-то другом? Задать состояние памяти можно в любом туле по работе с FPGA.

Share this post


Link to post
Share on other sites

Можно. Создай память через Block Memory Generator IP. И там в свойствах можно указать файл инициализации. Только в соответствующий формат надо будет преобразовать твой файл.

Share this post


Link to post
Share on other sites

Вроде бы нашел, XLINX ISE Design Suite 13.1 -> ISE Design Tools -> Tools - > Core Generator, это то, что надо?

Создал блочную память, в пункте Init File просит файл с расширением *.coe, а у меня файл *.txt, как его преобразовать?

Share this post


Link to post
Share on other sites

Гугли или смотри на сайте Xilinx что это за формат файла коэффициентов. Он довольно простой, но преобразовать придётся.

Share this post


Link to post
Share on other sites

Как преобразовать *.txt в *.coe в интернете не нашел. Добавил в текстовый файл с шестнадцатеричными кодами 2 строки memory_initialization_radix=2;
memory_initialization_vector=, изменил расширение *.txt на *.coe, Block memory Generator отработал с ошибками и создал в той папке, где лежал файл *.coe файл проекта blk_mem_gen_v6_1.xise и файлы VHD, в частности файл blk_mem_gen_v6_1.vhd.

Что теперь делать с этим файлом? Подтягивать в проект загружать на ПЛИС, и у меня на ПЛИС будет инициилизирован массив сигналов (блочная память)?

Share this post


Link to post
Share on other sites

Все равно ошибка, когда генерирую Block memory пишет 

ERROR:sim - Improperly formatted COE file .\tcom.idm.txt. Parameter assignments

ERROR:sim - should be separated by a ";" character.

ERROR:sim - Found an illegal assignment on line 1.

Похоже *.coe файл некорректный.

Share this post


Link to post
Share on other sites

Подскажите, пожалуйста, как теперь пользоваться сгенерированной памятью в проекте, как её подключать к проекту, как к ней обратиться в VHDL, для чего нужен файл *.ngc, я правильно понимаю, что это как-то связано с этим файлом.

Share this post


Link to post
Share on other sites

Обычно такие модули создают сразу в проекте и подключаются они автоматически. Так же среди сгенерированных файлов должен быть модуль, в котором подробно написано как подключать его порты.

Share this post


Link to post
Share on other sites

А какое расширение у этого файла, в котором описано, как подключать порты.

 

Не нужно цитировать целиком предыдущее сообщение - и так понятно, что ответ на него. К тому же, это запрещено Правилами данного форума - п.II.9. Отредактировал Ваши сообщения.

Edited by Lexus

Share this post


Link to post
Share on other sites

Ну как обычно .vhd или .v, смотря какой язык использовался.

Щас я создам проект в ISE 14.7 и повторю эти шаги.

Какой у тебя в проекте Preferred Language?

Share this post


Link to post
Share on other sites

Итак по шагам.

1. Создаём новый проект.

2. В меню Project жмём New Source.

3. Выбираем тип IP (Core Gen...) и задаём имя, например ram_sample. При этом ставим галочку Add to project. Жмём Next.

4. Выбираем Block Memory Generator. В появившемся окне задаём параметры нашей памяти, файл coe и т.п. Жмём Generate.

5. В иерархии проекта появился ram_sample. Выбери его мышкой. В нижнем окошке появятся опции для него - выбери View HDL Instantiation Template (щёлкни мышкой два раза).

6. Вставляй полученный темплейт в свой код.

Edited by Vascom

Share this post


Link to post
Share on other sites

Сигнал wea - это сигнал разрешения записи и чтения? И какие значения он принимает, если у меня описано: (wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0), он однобитный?

Share this post


Link to post
Share on other sites

wea - это Write Enable, то есть сигнал разрешения записи.

Он однобитный. Если "1" - то идёт запись, если "0", то чтение.

Share this post


Link to post
Share on other sites

А какой сигнал тогда разрешает чтение, вот имеющиеся порты?

    clka : IN STD_LOGIC;
    wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
    addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
    dina : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
    douta : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)

Share this post


Link to post
Share on other sites

В данном варианте - нет такого отдельного сигнала.

Когда wea в "1", данные со входа dina записываются в память по адресу addra.

Когда wea в "0", на выходе douta появляются данные из памяти по адресу addra.

 

Если нужен отдельный сигнал разрешения чтения, то надо переконфигурировать память, добавив выходной регистр и пин REGCEA. Но это замедлит память на один такт и не требуется в большинстве случаев.

Edited by Vascom

Share this post


Link to post
Share on other sites

Как в файле *.ucf задать соответствие вывода std_logic_vector (7 downto 0 ) и 8-ми светодиодам, надо каждый пин вывода сопоставить с ножкой светодиода. 

Share this post


Link to post
Share on other sites

Примерно так:

NET led_out[0] LOC = <номер требуемого пина>;
NET led_out[1] LOC = <номер требуемого пина>;
NET led_out[2] LOC = <номер требуемого пина>;
NET led_out[3] LOC = <номер требуемого пина>;
NET led_out[4] LOC = <номер требуемого пина>;
NET led_out[5] LOC = <номер требуемого пина>;
NET led_out[6] LOC = <номер требуемого пина>;
NET led_out[7] LOC = <номер требуемого пина>;

//Тут задаёшь выходной стандарт пина, например LVCMOS на 3.3В.
NET led_out[*] IOSTANDARD = LVCMOS33;

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Это вам так кажется только. В процессе разработки и наладки вылезет столько нюансов и коллизий, что замучаетесь их обрабатывать.
    • @tifaso , чтобы хоть примерно представлять, как выглядит многоканальная система дистанционного управления на рассыпухе (одна из самых простейших), посмотрите эту статью, например. И чтобы наладить такое, надо иметь, по крайней мере, осциллограф.
    • Тяжело таскать такой чумадан однако. Я недавно у приятеля двигал полуторатактник 2х40W, сделанный по схеме misterzu - куль картошки легче. А горячий, суко ... яичницу жарить можно. 
    • Частота дикая какая-то. У меня нет нормальных приборов. С  "частотомером до 50 МГц своими руками. На одной микросхеме 74hc4060" при делителе 16х показывает 126кГц. То-бишь 126кГц х 16 = примерно 2 МГц при делителе 32х показывает 52кГц. 52кГц х 32 = примерно 1,66 МГц Мерил на выходе на динамик. На 5й, 10й, 12й ногах ситуация кардинально не меняется. Щас ваще 144-150кГц х 16 показывает = 2,4МГц
    • Как только умер Ленин, оказалось, что второй человек в партии, товарищ Троцкий — предатель. Каменев, Зиновьев, Бухарин и Сталин свергли Троцкого и изгнали из СССР. Но через пару лет оказалось, что Каменев, Зиновьев и Бухарин тоже враги и вредители. Тогда доблестный товарищ Генрих Ягода их арестовал. Чуть позже Ягоду как вражеского агента арестовал Ежов. Но через пару лет оказалось, что и Ежов не товарищ, а обычный предатель и вражеский агент. И Ежова арестовал Берия. После смерти Сталина, все поняли, что и Берия тоже предатель. Тогда Жуков арестовал Берию.  Но вскоре Хрущев узнал, что Жуков враг и заговорщик. И сослал Жукова на Урал.  А чуть позже вскрылось что и Сталин–то был врагом, вредителем и предателем. А вместе с ним и большая часть политбюро. Тогда Сталина вынесли из мавзолея, а политбюро и примкнувшего к ним Шепилова разогнали честные партийцы во главе с Хрущевым.  Прошло несколько лет и выяснилось, что Хрущев был волюнтаристом, проходимцем, авантюристом и врагом. Тогда Брежнев отправил Хрущева на пенсию. После смерти Брежнева, выяснилось, что и он был вредителем и причиной застоя.  Потом было еще двое, которых никто и запомнить-то не успел. Но тут пришел к власти молодой, энергичный Горбачев. И оказалось, что вся партия была партией вредителей и врагов, но он–то сейчас все исправит.  Тут–то СССР и развалился. А Горбачев оказался врагом и предателем.  Вы ознакомились с кратким курсом истории СССР.
    • А где ФЧХ? Вещать о линейности без созерцания картины PH-фактора - моветон. 
    • Судя по формату номера, это контроллер с неперезаписываемой заказной прошивкой. Даташиты на такое не выпускаются.
  • Покупай!

×
×
  • Create New...