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, предлагает широкий перечень ЛХИТ, позволяющий подобрать элемент питания, в наибольшей степени соответствующий конкретным требованиям. Для тестирования параметров, указанных в Datasheet, специалисты Компэл организовали в апреле 2019 г. полугодовой тест на постоянный разряд в нормальных условиях четырех наиболее популярных моделей литий-тионилхлоридных и литий-диоксидмарганцевых батареек Fanso.

Посмотреть результаты первого среза

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

Share this post


Link to post
Share on other sites

А у вас нет 32-разрядной версии Vivado? На официальном сайте XILINX.com только 64-разрядные версии.

Share this post


Link to post
Share on other sites

Новое бюджетное семейство микроконтроллеров STM32G0 и планы его развития

Семейство STM32G0 сочетает в себе лучшие качества представителей семейств STM32F0 и STM32L0 - относительно высокую производительность и низкое энергопотребление. Модели STM32G0 имеют упрощенную схему питания, улучшенную периферию, систему тактирования и быстрые порты в/в, доп.средства защиты ПО, повышенную устойчивость к статическим разрядам, широкий ассортимент корпусов, обновленные пакеты библиотек для STM32CubeMX. STMicroelectronics планирует развивать новое семейство.

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

А до этого ты в 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...

  • Сообщения

    • Подделка под браун,у на такие филипсы продавались,гдето из Одессы завозили. В части питания нужно всё промерять,абсолютно всё,и только потом подавать питание.
    • Понял, заменю, вот только вопрос по электролитам. Есть смысл заменить на бОльшие по ёмкости? Ксати, на схеме (а это вся справочная информация по осциллу) не указаны номиналы конденсаторов. Но, судя по схеме, электролиты те, что я обвёл.
    • В  юмор бы такие перлы перенести....
    • Придется видимо собирать схему, заведомо не проверив =(  Не хочет оно у меня работать ни в мультисиме, ни в протеусе, обычно не собираю, если нельзя просиммулировать. Нарыл второй оу741, подскажите кто в теме, насколько критично использовать питание именно +12 и -6в? ОУ я так полагаю тут тоже можно применить практически любые, 741 довольно древняя штука.
    • И как вы его определяете? Есть пример перемаркера?
    • И источник смещения тоже надо умощнять. Просится уже каскодный из 5350 или как у Yan, в его модификации выхода. Но мне каскодный больше нра.
    • Очень нужная тема в разделе для профессионалов, @uspih не слушайте ни кого, правильно, меняйте динамик, а лучше два сразу, так как они на заводе подбираются по "парно", а то мало ли чего, возможно и в диапазон не попадут, еще попробуйте снять декоративные "сетки" если они есть. У вас очень "точный" тестер M830BUZ который при замыкании щупов показывает 1.7 Ом, соот. вы правильно определили что это динамик, так что не сдавайтесь и делитесь опытом.
×
×
  • Create New...