Счётчик считает от 0 до 50М? Значит частота моргания 50000000 Гц / 50000001, т.е. меньше 1 Гц. В VHDL и Verilog константа задана десятичным числом без ограничения разрядности, по умолчанию 32 бита, от того и получается перерасход.
Простой вопрос: можно ли запускать несколько модулей независимо друг от друга на одной плате? В виде схемы такое нарисовать получилось, а как это сделать в veriloig? В качестве главного указывается один модуль, остальные могут из него вызываться и быть с ним связанными. А полностью независимыми сделать можно, со своими входами и выходами?
Нельзя, топ модуль содержит порты связанные с физическими пинами на плате, разработка на FPGA всегда подразумевает работу на древовидной структуре. Проекты могут содержать несколько топ модулей, но это лишь позволяет переключаться между ними.
Вопрос, если мы посылаем на светодиод 25ый бит то светодиод загорится чуть раньше чем досчитает до 50миллионов? Это специальные ограничения или стиль из экономии ячеек, или не важно точность в этом примере? А почему не включать светодиод после строки cnt = 0...
Это не экономия ячеек, не неточность, так и было задумано - светодиод включается когда 25-й бит счетчика становится "1" и выключается, когда он становится "0". Да, скважность свечения не равна 2, так как включение светодиода происходит при значении счетчика 32М, а выключается при 50000000. И для светодиода это вполне приемлемо - глазами мы будем видеть моргающий светодиод один раз в секунду. Тем более что у человека в глазу есть инертность, заставляющая нас видеть яркое свечение дольше, чем оно было на самом деле :) Более точный способ - менять состояние светодиода 2 раза в секунду, когда счетчик достигает значения 25000000-1, но в данном примере такая точность была не нужна
Утверждение, что выражения внутри процесса исполняются последовательно, НЕКОРРЕКТНО! Пример: signal i: std_logic; signal ii: std_logic; -------------- process(CLK) begin if rising_edge(CLK) then i
@@masteroogway7283 не понял, но нашёл куда более приемлемый способ. Пишу все ртл и бенчи в vs code, там можно и тему поменять, и фичи удобные есть. В квартусе тупо запускаю уже
интересуют подробности в коде ahdl , if cnt [ ] == 50000000 , тут скобки нужны для того чтобы указывать откуда будет считываться 50000000 (тоесть скобки обозначается выход ?) и как зачем так мудрено задается кол-во тригеров [25..0]
Со скобками все просто - есть группа триггеров из 26 штук. Можно анализировать выходы каждого триггера в группе, например, cnt.q10, а можно у всей группы, например, cnt.q[25..0] или cnt.q[] или ещё короче cnt[]. Последняя запись предполагает обработку всех выходов триггеров сразу
Отличный урок, ждем следующих видио)
сравнительный анализ различного подхода к написанию конфигурации - да это ж КРУТЬ!
Видео высшей степени годности.
Счётчик считает от 0 до 50М? Значит частота моргания 50000000 Гц / 50000001, т.е. меньше 1 Гц.
В VHDL и Verilog константа задана десятичным числом без ограничения разрядности, по умолчанию 32 бита, от того и получается перерасход.
Простой вопрос: можно ли запускать несколько модулей независимо друг от друга на одной плате? В виде схемы такое нарисовать получилось, а как это сделать в veriloig? В качестве главного указывается один модуль, остальные могут из него вызываться и быть с ним связанными. А полностью независимыми сделать можно, со своими входами и выходами?
Нельзя, топ модуль содержит порты связанные с физическими пинами на плате, разработка на FPGA всегда подразумевает работу на древовидной структуре. Проекты могут содержать несколько топ модулей, но это лишь позволяет переключаться между ними.
Вопрос, если мы посылаем на светодиод 25ый бит то светодиод загорится чуть раньше чем досчитает до 50миллионов? Это специальные ограничения или стиль из экономии ячеек, или не важно точность в этом примере? А почему не включать светодиод после строки cnt = 0...
Это не экономия ячеек, не неточность, так и было задумано - светодиод включается когда 25-й бит счетчика становится "1" и выключается, когда он становится "0". Да, скважность свечения не равна 2, так как включение светодиода происходит при значении счетчика 32М, а выключается при 50000000. И для светодиода это вполне приемлемо - глазами мы будем видеть моргающий светодиод один раз в секунду. Тем более что у человека в глазу есть инертность, заставляющая нас видеть яркое свечение дольше, чем оно было на самом деле :)
Более точный способ - менять состояние светодиода 2 раза в секунду, когда счетчик достигает значения 25000000-1, но в данном примере такая точность была не нужна
Утверждение, что выражения внутри процесса исполняются последовательно, НЕКОРРЕКТНО!
Пример:
signal i: std_logic;
signal ii: std_logic;
--------------
process(CLK)
begin
if rising_edge(CLK) then
i
Подскажите пожалуйста как сделать в Quartus(-е) тёмный стиль интерфейса
Понял как ?
@@masteroogway7283 не понял, но нашёл куда более приемлемый способ. Пишу все ртл и бенчи в vs code, там можно и тему поменять, и фичи удобные есть. В квартусе тупо запускаю уже
Подскажите в подробностях как сделать блинк на макс 2 на визуальном языке за ранее спасибо
В подробностях описать не получится, но в двух словах делается с помощью блока счетчика и мультиплексора, в quartus эти модули в визуале есть
В другой лекции слышал что если в Verilog число не описано он его делает 32 бит по умолчанию
Зависит от компилатора, но если регистр имеет большую разрядность, то все не используемые разряды обнуляются
интересуют подробности в коде ahdl , if cnt [ ] == 50000000 , тут скобки нужны для того чтобы указывать откуда будет считываться 50000000 (тоесть скобки обозначается выход ?) и как зачем так мудрено задается кол-во тригеров [25..0]
Со скобками все просто - есть группа триггеров из 26 штук. Можно анализировать выходы каждого триггера в группе, например, cnt.q10, а можно у всей группы, например, cnt.q[25..0] или cnt.q[] или ещё короче cnt[]. Последняя запись предполагает обработку всех выходов триггеров сразу
а как начать?
начать с самого простого, сложение чисел, условные структуры
Страшно подумать в случае тактовой частоты
равной 1 ГГц....😨
Очень сложно собирать проекты на 1 ггц, особенно на больших кристаллах, так как на таких скоростях очень высокие требования по временным ограничениям