Jump to content

    

Search the Community

Showing results for tags 'quartus'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Сайт и форум
    • Новости и обсуждения сайта и форума
    • Другие известные форумы и сайты по электронике
    • В помощь начинающему
    • International Forum
    • Образование в области электроники
    • Обучающие видео-материалы и обмен опытом
  • Cистемный уровень проектирования
    • Вопросы системного уровня проектирования
    • Математика и Физика
    • Операционные системы
    • Документация
    • Системы CAD/CAM/CAE/PLM
    • Разработка цифровых, аналоговых, аналого-цифровых ИС
    • Электробезопасность и ЭМС
    • Управление проектами
    • Neural networks and machine learning (NN/ML)
  • Программируемая логика ПЛИС (FPGA,CPLD, PLD)
    • Среды разработки - обсуждаем САПРы
    • Работаем с ПЛИС, области применения, выбор
    • Языки проектирования на ПЛИС (FPGA)
    • Системы на ПЛИС - System on a Programmable Chip (SoPC)
  • Цифровая обработка сигналов - ЦОС (DSP)
    • Сигнальные процессоры и их программирование - DSP
    • Алгоритмы ЦОС (DSP)
  • Микроконтроллеры (MCs)
    • Cредства разработки для МК
    • ARM
    • AVR
    • MSP430
    • Все остальные микроконтроллеры
    • Отладочные платы
  • Печатные платы (PCB)
    • Разрабатываем ПП в САПР - PCB development
    • Работаем с трассировкой
    • Изготовление ПП - PCB manufacturing
  • Сборка РЭУ
  • Аналоговая и цифровая техника, прикладная электроника
  • Силовая Электроника - Power Electronics
  • Интерфейсы
  • Поставщики компонентов для электроники
  • Майнеры криптовалют и их разработка, BitCoin, LightCoin, Dash, Zcash, Эфир
  • Дополнительные разделы - Additional sections

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


Город


Код проверки


skype


Facebook


Vkontakte


LinkedIn


Twitter


G+


Одноклассники

Found 9 results

  1. Приветствую! Пытаюсь вот вникнуть в нюансы скриптинга под Qu. Но что то туго идет - видать грибы в наше местности не такие забористые как у разработчиков . Хочу сваять скрип который делает билд несколькими этапами с модификацией настроек между билдами. Для этого используя qurtus_sh и в соответствии с наставлениями "Quartus II Scripting Reference Manual" создаю пустой проект. Теперь надо бы наполнит его содержимым, но чтобы опять не набивать лишние пару тысяч строк настроек можно же использовать source готовых настроек project_new -overwrite -revision $rev $prj source "project_all_setings.qsf" project_close Вроде все ок, проект создался - но портянка получающаяся в project.qsf удручает. Думаю, можно же сделать и так project_new -overwrite -revision $rev $prj set_global_assignment -name FAMILY "Stratix V" set_global_assignment -name DEVICE 5SGXEABK2H40C2 set_global_assignment -name NUM_PARALLEL_PROCESSORS 4 project_close set fou [open "$rev.qsf" "a"] puts $fou "\n" puts $fou "#==============================================================================" puts $fou "source \"./project_all_setings.qsf\"" puts $fou "#==============================================================================" close $fou ... Тогда в qsf проекта будет только ссылка/source со всеми настройками - красота! В GUI это работает и позволяет контролировать бардак в головах qsf. И действительно - на диске получается красивый qsf ... set_global_assignment -name TOP_LEVEL_ENTITY top set_global_assignment -name ORIGINAL_QUARTUS_VERSION 19.1.0 set_global_assignment -name PROJECT_CREATION_TIME_DATE "02:12:09 SEPTEMBER 18, 2020" set_global_assignment -name LAST_QUARTUS_VERSION "19.1.0 Standard Edition" set_global_assignment -name NUM_PARALLEL_PROCESSORS 4 #============================================================================== source "./project_all_setings.qsf" #============================================================================== Как бы ни так (подумали разработчики Qu) - потому как последующее ... ... project_open -revision $rev $prj set_global_assignment -name PARTITION_NETLIST_TYPE EMPTY -section_id id_some_parttion ... project_close ... приводит к тому что добавленные строки с source удаляются! Получается что в qurtus_sh в этом случае команда project_close ничего не закрывает хотя файл qsf и обновляется после "закрытия". А команда project_open соответсвенно не читает реальное содержимое qsf (а зачем, раз не закрыто то вот же оно, в кэше лежит)? Может кто проверить, такое поведение повторяется? Удачи! Rob.
  2. Столкнулся с проблемой в "уважаемом" Квартусе: по исходному проекту нужно установить целый ворох констрейнов для проверки прототипа в FPGA, но сам тул просто оптимизирует большинство имён модулей. Как можно указать сохранить имена именно входных/выходных портов для конкретного модуля? Ну или не оптимизировать иерархически. Квартус 20.1, бесплатный. Соответственно LogicLock не предлагать. З.Ы. Также на более поздних этапах будет интересовать вопрос по фиксированию определённой логики во floorplan. Я хорошо знаю как это делается у Xilinx, но как и есть ли вообще такой функционал у Альтеры - вопрос.
  3. Всем привет. Пытаюсь передать параметризированную структуру между модулями и поскольку "parameter type" в Quartus 18.1 не работает, я хочу сделать это через интерфейс. Описываю его в отдельном файле, создаю инстанс в топ модуле, а во вложенном модуле пытаюсь вытащить из него тип данных. Выглядит это так: interface intf_WITHSTRUCT #(WIDTH=8); typedef struct packed{ logic val; logic [WIDTH-1:0] cnt; } st_INSIDE_INTF; st_INSIDE_INTF struct_inst; endinterface: intf_WITHSTRUCT module top (output logic [7:0] ocnt); intf_WITHSTRUCT #(.WIDTH(8)) interface_inst(); test i_test ( .clk(clk_125MHz), .rst(prb_rst), .blabla(interface_inst), .ocnt(ocnt) ); endmodule: top module test ( input clk, input rst, intf_WITHSTRUCT blabla, output logic [7:0] ocnt ); typedef blabla.st_INSIDE_INTF st_INSIDE_INTF_import; // Вытаскивю структуру st_INSIDE_INTF_import new_struct_inst; // Создаю инстанс always_ff@(posedge clk or posedge rst) if(rst) new_struct_inst <= '0; else new_struct_inst.cnt <= new_struct_inst.cnt + 1'b1; always_ff@(posedge clk or posedge rst) if(rst) ocnt <= '0; else ocnt <= new_struct_inst.cnt; endmodule: test В результате получаю ошибку: Error (10733): Verilog HDL error at test.sv(17): cnt is not declared under this prefix В чем может быть ошибка? Что странное, если во вложенном модуле я присваиваю структуре (которая в интерфейсе) значения, то ошибки не возникает. На мой взгляд не логичное поведение
  4. Всем доброго времени суток! Никогда ранее не обращался на форумы, но в данной ситуации ответа на свой вопрос в Сети не смог найти. Кратко введу в курс дела. Использую: 1) САПР для проектирования на ПЛИС - Quartus Prime Standart Edition 18.0.0 build 614 2) САПР для симуляции Verilog кода - ModelSim INTEL FPGA Starter Edition 10.5b Revision: 2016.10. (Данная версия поставляется вместе с Quartus на сайте https://fpgasoftware.intel.com/) 3) Для проверки результатов симуляции использую MATLAB 9.8 (2020a). В MATLAB на данный момент использую Signal Analyzer для просмотра спектра сигналов полученных в результате работы программного(-ых) модулей. Все программные модули пишу на Verilog (начал его изучать первым, на данный момент с VHDL знаком лишь отчасти). Опыт. Увлекся ПЛИС на 3 курсе университета. Специальных предметов по тематике ПЛИС на моем направлении не было, поэтому изучал все по видео/статьям/книгам/форумам. Увлечение переросло в желание написать диплом по ПЛИС. Таким образом, знаком с ПЛИС в районе 1,5 лет, из которых в учебное время не было слишком серьезных задач, а если и были, то решались они для моего уровня так, как мог их решить (костыли и тд). Вторым увлечением была ЦОС, в которой знания и опыт черпал из тех же источников, что и по тематике ПЛИС. Сейчас же появилась задача следующего плана. Занимаюсь QPSK демодуляцией. Разделим данный процесс на 3 этапа 1) Использование гетеродина для переноса на более низкую частоту. Тут все как обычно. Гетеродин и два умножителя для двух каналов (синфазного и квадратурного). 2) Децимация. Перед непосредственно реализацией дециматора окунулся в эту тематику. Знаком с статьей Hogenauer'a, а также с другой информацией на эту тему (ru.dsplib.org, dspguru.com), а также информацией с других сайтов. Имея начальное представление решил попробовать сделать, в итоге все получилось и CIC-фильтр работает так, как и ему положено. 3) Фильтрация. Компенсация искажений АЧХ после CIC-фильтра и последующая низкочастотная фильтрация. Так как в качестве САПР для проектирования на ПЛИС я использую Quartus, то было решено не использовать MATLAB без необходимости и решить задачу децимации и фильтрации с помощью встроенных в Quartus IP-ядер, а именно CIC и FIR II. В процессе работы с ядром проектирования CIC фильтра, есть возможность (ядро само сделает все необходимые файлы) сделать примерный вариант CIC фильтра, учитывая имеющиеся параметры. Одним из файлов является код MATLAB, который позволяет рассчитать коэффициенты компенсирующего FIR фильтра. В процессе выполнения скрипта задается количество и "битность" коэффициентов фильтра, а также - "FIR filter sample rate in Hz before decimation (80e6 as default): 20e6 (я указал 20 МГц)", что говорит нам о частоте дискретизации входного сигнала ПЕРЕД децимируюшим фильтром; - "FIR filter cutoff frequency in Hz (4e6 as default): 1.2 МГц". Частота среза компенсирующего FIR фильтра (в моем случае 1.2 МГц). После чего скрипт формирует текстовый файл с коэффициентами корректирующего FIR фильтра, которые загружаются позже в ядре FIR II. Исходя из коэффициентов ядро автоматически строит АЧХ,ФЧХ и ИХ получившегося фильтра. И вот мы дошли до самой сути моей проблемы. Все идет хорошо ровно до момента с компенсирующим FIR фильтром. По временным диаграммам в ModelSim (скриншот прикрепил) работа NCO, CIC и FIR фильтра прекрасна, то есть они работают и никто из них не простаивает и т.д. Ввиду того, что очень долго ковыряюсь с этой проблемой была сделана простая схема (скриншот из RTL Viewer из Quartus'а прикрепил), которая подает синусоиду с частотой 1 МГц и частотой дискретизации 20 МГц на вход CIC фильтра. Настройки CIC ядра: - Filter type - Decimator; - Number of Stages - 5; - Differential Delay - 1 cycles - Rate change factor - 2; - Input data width - 12 bit - Output Rounding Method - Hogenauer Pruning; - Output data width - 12 bit. Имея такие настройки CIC фильтр отлично отрабатывает и не искажает спектр в требуемом 1 МГц (скриншот прикрепил). Далее исходя из этих настроек был сделан скрипт, в котором задавал следующее: - Number of filter coefficients (31 as default): *оставил default значение*; - FIR filter sample rate in Hz before decimation (80e6 as default): 20e6; - FIR filter cutoff frequency in Hz (4e6 as default): 1.2e6 - Number of bits to represent the filter coefficients (16 as default): *оставил default значение*. После этого были сформированы коэффициенты и теперь надо настроить ядро FIR II. Настройки в нем задавал следующие: - Filter Type - Single Rate; - Interpolation / Decimation Factor - 1; - Clock Rate - 10 MHz; - Input Sample Rate (MSPS) - 10; - Coefficient Width - 16 bits; - Input Width - 12 bit; - Output Width - 14 bit; - Specifies whether to truncate or saturate the MSB - Truncation (аналогично для такого же параметра, но для LSB); - MSB Bits to Remove - 10; - LSB Bits to Remove - 9. Если не обрезать MSB и LSB, то на выходе ядро рекомендует ширину в 33 бита, что много и существенной разницы между 14 и 33 битами я не увидел (при увеличении доли MSB в сигнале растет мощность в дБ на спектре и все). Да, я пробовал 33 бита, однако желательно уходит от такой большой разрядности. Имея такие настройки, мы имеем следующую картину в спектроанализаторе Signal Analyzer (скриншот прикрепил). Как видно из рисунков спектр после FIR фильтра больше похож на шум, чем на что-то осмысленное. Промучавшись долго с этим ядром я решил, что необходимо попробовать сделать CIC и FIR в MATLAB и сравнить результат. При даже меньшей разрядности FIR фильтр выдал необходимый мне спектр и отработал так, как я и хотел (аналогично и CIC) (скриншот сравнения MATLAB'овского компенсирующего FIR и генерируемого ядром не смог прикрепить, однако и видно даже на первый взгляд, что разница имеется). Таким образом, вопрос. Знает ли кто-то в чем заключается проблема с FIR II ядром и почему (вроде бы нигде не ошибаясь) я получаю такой отрицательный результат? Заранее благодарю за уделенное время и оказанную помощь Что получилось загрузить
  5. Работаю с Cyclone III в Quartus II 13.0. Возможно ли создать Pci Compiler в QSYS? Смог добавить "вручную" через файл .qsys, но возникает ошибка "interface must have an associated reset". В настройках Pci Compiler создать reset нельзя. Так же возникает ошибка "altera_avalon_pci_compiler can not be generated in Qsys. Replace this component with a Qsys-compatible component." Если ли возможность как то обойти эту проблему или только работа в Sopc builder?
  6. Всем привет. Мы проводим стримы по FPGA/ПЛИС тематике на твиче по адресу twitch.tv/fpgasystems Обычно, это среда и суббота в 20:00. Записи прошедших стримов лежат на youtube: youtube.com/c/fpgasystems Ждём Вас на стриме. Анонсы предстоящих эфиров в группе в телеграм @fpgasystems (https://t.me/fpgasystems) и VK и FB
  7. походу нашел странный глюк использую связку Quartus 64bit 13.0.1 SP1+ Cyclone II EP2C8Q208C8 код - cделал вырезку, в ней глюк сохранятся // // переключение режимов reg [31:0] div10; reg CLK10; always @ (posedge CLK) begin if (div10 == 2400000) begin CLK10 <= 1; div10 <= 0; end else begin div10 <= div10+1; CLK10 <= 0; end end // reg [3:0] work_mode; // режимы работы комплекса // реакция на кнопки reg [3:0] step_key; always @ (posedge CLK10 ) begin if (~KEY[1]) // режимы begin if (step_key ==0) begin work_mode <= work_mode +1; CT [39:36]<= work_mode[3:0]; step_key <=1; end else begin step_key <=step_key+1; end end if (work_mode==0) begin DOTPOZ <=1; end else begin DOTPOZ <=6; end //CT [39:36] <= work_mode[3:0]; //CT [15:0] <= RD_CHECK[15:0]; //CT [35:16] <= addrramreadstream [19:0]; end // индикатор reg [3:0] DOTPOZ; // позиция точки 1234567890 reg [39:0] CT ; din40 dinamicind ( .CLK(CLK), .DIG(DIG), .SEG(SEG), .CT(CT), .POZ(DOTPOZ) ); проблема связана с переменной work_mode в данном коде, при старте она равна 0, однако, все проверки "if (work_mode==0)" считают что она равна 1 - те любой if обнаруживает значение больше на 1 чем там есть реально. на индикатор значение выводится верно. собака зарыта в месте присвоения CT [39:36]<= work_mode[3:0]; те если это в блоке вверху, то см эффект выше если перенести (раскоментировать/закоментировать) в блок внизу - 0 становится нолем итд итп блок динамического индикатора нужен для проявления глюка - те если его выключить, глюк пропадает. соответственно приложил код динамического индикатора. что там такого неправильного ? с чем связан данный глюк ? (на самом деле я ловил другой глюк и нашел этот случайно) как избежать подобного ? может что-то я делаю не так ? din40.v
  8. Добрый день уважаемые коллеги. В процессе разработки устройства (цифровой приёмник средневолнового диапазона) возникла проблема в конфигурации тайминга цифрового фильтра, при использовании соответствующей Мегафункции в Quartus 9.1. ПЛИС EP2C8Q208 (Cyclone II), КИХ фильтр 80 порядка, архитектура - Fully serial filter, single rate, входные данные - 24 бита (signed) с частотой 100 кГц. В FIR Compiler получаю 25 циклов CLK на один отсчёт. Согласно документа Fir Compiler User Guide устанавливаю CLK - 2,5 МГц, сигналы Reset и ast sink ready - лог."1", шина ast sink error - на земле, и ast sink valid сформировал через триггер - каждый 25-й отсчет CLK c длительностью в 1 период CLK (скважность 1/25 = 0,04) по сигналу valid от источника (CIC фильтр). Однако эти меры никак "не заводят" фильтр. При single cycle (вычисление отсчета за 1 CLK - c бешенным расходом LE) ast sink valid достаточно подтянуть к "1" и все работает... Может я что то неправильно понимаю в User Guide..? Заранее благодарен за любую помощь/пинок.
  9. Здравствуйте, пишу свой первый проект на ПЛИС (verilog, max10), проект создаю в учебных целях. Создал систему в Qsys: nios, память(sdram), Jtag, и самописный компонент. Внутри самописного компонента, с просторов интернета контроллер памяти sdram(отдельно от памяти nios), счетчик и DCFIFO для передачи из счетчика на sdram. Nios запускает счетчик, тот в считает до оперделенного числа, и записывает в FIFO, оттуда контроллер sdram забирает данные и пишет в память. Nios и счетчик работают на 100Мгц, sdram и память на 125Мгц, FIFO двухклоковое на запись 100 Мгц на чтение 125 Мгц. На симуляции все работает отлично но в железе появляются проблемы констрейнов. В assigment поставил sdram выводам fast IO, клоки сделал Global Clock. Sdram для Nios работет timequest не ругается, а в моем компоненте постоянно ошибки памяти и я не могу понять почему такие большие слаки. Память микрон MT48LC16M16A2. На nios память микрон MT48LC4M32B2. Констрейны nios sdram Констрейны контроллера Общая картина: Клок Nios sdram Sdram внутри компонента. Не могу понять причину почему sdram внутри моего компонента так отличается от sdram используемого nios. Уже 2 недели бьюсь, может кто-то подскажет? Исходник компонента прилагаю. src.sv