misyachniy 0 14 мая, 2011 Опубликовано 14 мая, 2011 · Жалоба 1)Скачал с сайта Micron модель SDRAM и тестбенч к ней. http://www.micron.com/get-document/?docume...48lc16m16a2.zip Создал проект в ISE и промоделировал в ModelSim XE III 6.3c . И сделал открытие ;-) В тексте модели есть строки такого вида // Auto Refresh if (Aref_enable === 1'b1) begin if (Debug) begin $display ("%m : at time %t AREF : Auto Refresh", $time); end Debug - обычный wire. Которые в моделсиме выводят сообщения. # test.sdram0 : at time 116.0 ns AREF : Auto Refresh # test.sdram0 : at time 186.0 ns AREF : Auto Refresh # test.sdram0 : at time 256.0 ns LMR : Load Mode Register # test.sdram0 : CAS Latency = 3 # test.sdram0 : Burst Length = 4 # test.sdram0 : Burst Type = Sequential # test.sdram0 : Write Burst Mode = Programmed Burst Length # test.sdram0 : at time 270.0 ns ACT : Bank = 0 Row = 0 # test.sdram0 : at time 291.0 ns WRITE: Bank = 0 Row = 0, Col = 0, Data = 100 # test.sdram0 : at time 298.0 ns WRITE: Bank = 0 Row = 0, Col = 1, Data = 101 # test.sdram0 : at time 305.0 ns WRITE: Bank = 0 Row = 0, Col = 2, Data = 102 # test.sdram0 : at time 312.0 ns WRITE: Bank = 0 Row = 0, Col = 3, Data = 103 # test.sdram0 : at time 319.0 ns NOTE : Start Internal Auto Precharge for Bank 0 Если кликнуть на эти сообщения - в окне сигналов курсор перемещается в точку где произошло событие. Я по аналогии в свой проект вставил вызов $display - но перемещения курсора в окне сигналов отсутствует :-( Тогда я просто скопировал строчку "$display ("%m : at time %t AREF : Auto Refresh", $time);" - результат аналогичен. Получается в тестбенч нельзя вставить "$display с тем чтобы ходить по сигналам? 2) Понадобилось сохранить 16 битные данные в двоичном виде в файл. С помощью $write удается сохранить только в виде 32-битных чисел. Как то странно. Считывать из файла у меня получилось а вто запись нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndrewS6 0 16 мая, 2011 Опубликовано 16 мая, 2011 · Жалоба 2). Используйте $fwrite вместо $write. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 16 мая, 2011 Опубликовано 16 мая, 2011 · Жалоба Как то странно. Считывать из файла у меня получилось а вто запись нет. Добрый день! Личный ящик у Вас отключен, потому пишу сюда... У меня на сайте уже выложены все статьи по "Краткому Курсу HDL", так вот там как раз даны примеры того, как писать в файл, читать из файла и мониторить при отладке... Удачи! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yura-w 0 20 мая, 2011 Опубликовано 20 мая, 2011 · Жалоба 2) Понадобилось сохранить 16 битные данные в двоичном виде в файл. С помощью $write удается сохранить только в виде 32-битных чисел. Как то странно. Считывать из файла у меня получилось а вто запись нет. Похожая тема поднималась, поищите по форуму. встроенные функции ModelSim/Questa ($write и т.п.) не позволяют писать бинарные файлы. Воспользуйтесь DPI(сам так делаю). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Джеймс 3 20 мая, 2011 Опубликовано 20 мая, 2011 · Жалоба встроенные функции ModelSim/Questa ($write и т.п.) не позволяют писать бинарные файлы. Можно писать, но только 32-разрядные значения. Используйте $fwrite Сразу уж приведу пример wire [31:0] data; wire ready; wire clk; integer filea; initial begin filea=$fopen("D:/myfile.bin", "wb"); ..... ..... end always @(posedge clk) begin if (ready) $fwrite(filea,"%u",data); end ............... $fclose (filea); $stop; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться