Трофим

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

39 posts in this topic

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

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

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

Share this post


Link to post
Share on other sites

DC/DC-преобразователи MORNSUN R3. Повышенная надёжность - сниженная стоимость!

Особенностью преобразователей R3 являются улучшенные технические характеристики, повышенная надёжность и сниженная стоимость. Электрическая прочность изоляции представленных преобразователей не менее 1500 В, а температурный диапазон применения -40…105ºС.

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

Vascom    660

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

Share this post


Link to post
Share on other sites

Новые методы уменьшения дрейфа нуля в малошумящих АЦП Texas Instruments

Стабилизация с помощью двойного прерывания с двойным контролем в новых АЦП ADS1235 производства Texas Instruments позволяет снизить до минимума напряжение смещения и достичь высокой точности в измерительных цепях современных прецизионных цифровых приборов.

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

Vascom    660

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

Share this post


Link to post
Share on other sites
Vascom    660

Можно. Создай память через 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
Vascom    660

Гугли или смотри на сайте 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
Vascom    660

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

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
Vascom    660

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

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

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

Share this post


Link to post
Share on other sites
Vascom    660

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

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
Vascom    660

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
Vascom    660

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

Когда 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
Vascom    660

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

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Сообщения

    • Не так давно их просто выбрасывали. Теперь не те времена ...
    • Может и рано но я попробую!  Я вот такой возьму. 
    • Схема простого  ЛБП на  LM317, обеспечивающая регулировку выходного напряжения от 0 до 15 В и стабилизацию выходного тока от 0 до 1 А. Краткое описание работы схемы: Для стабилизации и ограничения выходного тока, в стандартную схему добавлены: токовый резистор ( шунт ), два стабилизатора напряжения на +- 2,5 В на TL431, ОУ и транзистор. От стабилизаторов питается ОУ, который сравнивает  напряжение, задаваемое переменным резистором ТОК с падением на шунте и в случае превышения открывает транзистор в цепи управляющего вывода  LM317 . Также напряжение - 2,5 В используется, чтобы опустить потенциал управляющего вывода LM317 на 1,25 В, чем обеспечивается регулировка выходного напряжения от 0 В. Ещё  добавлено реле для подачи напряжения на выходные клеммы, которое включается тумблером S1. Схема смакетирована " в железе " и подтвердила ожидаемые характеристики.  Чтобы устанавливать ток ограничения на уровне единиц мА, необходимо использовать ОУ с малым смещением нуля, или добавить схему балансировки.
    • А можно как то проверить транзистор на пробой при напряжении 120В? Что бы определиться с этим леваком и не ставить их в плату?
    • Вся помощь будет не в кассу. @Микаил вам рано ещё "жука" собирать.
    • Что такая беспомощность то.
    • Он же не комар  Он и есть обычный тpoлль. Только алабамский. 100% получает за это деньги. Говорит только по методичке, вопросы игнорирует. Да что и говорить... Задоблала меня эта форумная "цензура" - нашли, понимаешь, место о благопристойности думать... уже и слово тpoлль написать не дает автозамена. Сами вы чайники.