Jump to content
Трофим

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

Recommended Posts

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

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

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

Share this post


Link to post
Share on other sites

Вебинар STM32G0 – новый лидер бюджетных 32-битных микроконтроллеров от STMicroelectronics

Компания Компэл приглашает вас 25 сентября принять участие в вебинаре, который посвящен новому семейству микроконтроллеров STM32G0. Вебинар рассчитан на технических специалистов и тех, кто хорошо знаком с семейством STM32. На вебинаре будут освоены современные методы тестирования производительности микроконтроллеров на примере самых бюджетных 32-битных семейств общего назначения STM32G0 и STM32F0 и проведено их подробное сравнение.

Подробнее

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

Share this post


Link to post
Share on other sites
                     

Литиевые батарейки Fanso в беспроводных датчиках пожарно-охранной сигнализации

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

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

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

  • Сообщения

    • Очередная порция новостей. МУКИ с этим усилителем продолжаются, хотя есть и успехи. Собрал второй блок УНЧ-50-8. Ну, тот на котором сгорели транзюки и на котором я все их выпаял. Во время пайки, у одного кт315 отвалилась ножка. Капец они жидкие. По счастливой случайности под рукой были 2N3904, которые даже лучше. Их и поставил. Для кт361 замены не нашлось, поэтому оставил его. На место сгоревшего кт837Н поставил кт837Х. Тестер показал что они по h21э почти одинаковые, по сравнению с кт837а. Запускаем... Работает! Постоянка на выходе 5-7 милливольт. Но к сожалению шум "бзззззз" по прежнему никуда не исчез. Попробовал увеличить емкость С5 (по дефолту 3.3пф). Рекомендуют увеличивать до 15-30пф. У меня таких номиналов не оказалось. Минимум что было, это 100пф. Попробовал его. Результат - не работает, вернее не пускает защита, реле даже не щелкает. Вернул 3.3пф на место. Ладно, условно блоки УНЧ-5-0-8 готовы и работают. Но надо победить этот звенящий фон. Замучался искать его причину. То ли тембрблок его источник, то ли сами блоки УНЧ, ума не приложу... Включил, громкость выкрутил на середину (именно в этом положении шумит больше всего), потрогал конденсаторы пальцами. Выяснилось что при прикосновении к С8 (0.1 мкф) шум усиливается. Выпаял, посмотрел, измерил. Емкость в норме 100нф, еср 1.8. Вроде порядок, да и что с ним может быть, это ж пленка. Впаял обратно. При прикосновении к металлическому корпусу темброблока шум тоже усиливается. И это отражается на индикаторе. Индикация аж в "оранжевую" зону уходит, ну то есть перегруз показывает. Может самовозбуждение где то какое то идет... фиг его знает.  Пустил в ход последнюю надежду в виде новой к157уд2. Старую выпаял, новую впаял и... Ноль эффекта, как шумело так и шумит. Пошло оно все В ПЕКЛО! 
    • перевожу на доступный : датчик с выходом ОК , нормально открытый , имеет два режима работы "триггер" и "концевик"  . в режиме "концевик" при подаче питания происходит ложное срабатывание датчика на 0,5сек.  подключенный на выход таймер запускается по спадающему фронту и происходит ложное включение всей последующей цепочки. причина : прошивка МК написана  Ивашкой из китайского "дворца Пыонеров" забывшего обнулить регистр порта вывода перед переключением порта на выход при инициализации МК. лечится перепрошивкой МК или заменой МК со своей прошивкой.
    • В юношестве собирал предусилитель для магнитного звукоснимателя ВЕГА-106 ( 81/3  Сухов, Байло, шумел, кстати, сильнее штатного ), вот тогда с разводкой земли первый раз познакомился, пауки и те удивлялись 
    • Поофтоплю малость. Вчера в местной радиолавке покупал детали,перед мной парень по десятку резисторов,диодов и мелких транзисторов подншевле типа наших кт315. Знакомый продавец спрашивает-мол куда надо то? Оказалось в радиокружок школьный. Представляете как я обрадовался? Телефон взял,адрес дал. Отдать лишнее конечно со своих развалов (подозреваю у каждого из нас есть чего) Белорус,отдай пионерам на опыты,пусть жгут. Главное с удовольствием )))
    • Обычным свитым проводом тянется, параллельно с сигналом ООС .
    • Картинки это хорошо, но когда всё на одной плате, то витую пару можно только 2 и 3 слое 4-х слойки выполнить
    • В сидюках много всякого можно встретить. FB в землях, хитрые выпрямители....много всякого
×
×
  • Create New...