Pull to refresh
27
34.1
Алексей@ClockEnable

User

Send message

Лучше начать с отжиманий от пола. От пустого грифа толку не будет. Лишь трата времени. Хотя, с другой стороны, тренерам и владельцам зала тоже хочется вкусно кушать :)

Автор не сказал, но есть такое старое правило, еще с советских времен известное. Если не можешь подтянуться на турнике 10 раз и отжаться на брусьях 15, то штанга - это рано.

Сначала нужно научиться работать со своим весом. Подготовить связки и суставы. Иначе штанга только во вред будет. Травмы принесет.

Так что лучше начинать с малого. Оно и проще, и бесплатно. И главное очень быстро понятно станет, а нужна ли вообще тебе эта штанга :)

Если про CAS_LATENCY, то это стандартные 2 или 3 такта. В зависимости от микросхемы и частоты.

Если общая latency для контроллера - то это 4 такта задержки при извлечении данных (или команды чтения) из ФИФО, и еще 2 такта на формирование адреса на шину памяти

Вот из даташита взял описание для MODE REGISTER. Мне казалось, что это вообще из стандарта на SDRAM. Для всех производителей должно быть одинаково. Но может я не прав.
В любом случае всегда надо на даташит опираться для конкретной микросхемы.

  1. для любой микросхемы типа SDR SDRAM. С любой шириной шины данных DQ. Ну по крайней мере в теории)

  2. Не совсем, буфер строк перезаписывается только если я даю команду записать строку символов в буфер строк. При перезаписи извлекается символ из ROM и переносится в буфер строк. А вычитывается буфер строк каждый кадр

да, надо мне будет подробнее почитать про Yosys, спасибо.

я кстати тоже не люблю применять проприетарные блоки. В случае смены производителя будет огромная проблема

  1. Я писал код контроллера полностью аппаратно независимым. То есть внутри контроллера нет никаких привязок к Альтере. PLL и IO-буферы вынесены наружу. Поэтому код контроллера должен собираться под микросхемы любых производителей. Некоторые части этого контроллера, например FIFO, работают в железе на ПЛИС Xilinx и Efinix.

  2. Видео - самое простое. VGA - там вообще только импульсы синхронизации. А символы текста хранятся в блочной памяти, организованной как ROM. Самое трудоемкое для меня было нарисовать эти символы. Сама картинка (синий фон) генерятся налету. И налету накладываются строки символов. Они хранятся в небольшом буфере на блочной памяти. 1 байт - 8 пикселей.

  3. 50 МГц - это только видео. Контроллер памяти - любая частота, задаю на PLL. Максимальная у меня - 143 МГц.

  4. Многопоточность - это как раз та самая фишка контроллера. Да шина памяти одна, но доступ к ней можно дать нескольким абонентам. Можно до 16 независимых абонентов подключить к контроллеру. Причем каждый на своей собственной тактовой частоте. И как раз внутренний арбитр контроллера организует их мультиплексирование на шину памяти. И каждый такой абонент может писать в память или читать независимо от других абонентов. И ему не нужно знать состояние контроллера или другого абонента. Нужно только проверять заполненность FIFO, на которое он подключен.

  5. Да, я пробовал чуть выше частоту давать. Если при 143 МГц, а точнее при 7 наносекундах все нормально, то уже примерно при ~6.9-6.8 нс начинаются ошибки. Несколько ошибок на цикл.

Проект может быть выложу у себя на сайте. но пока не уверен. Если он на текущем месте работы будет использоваться, тогда не смогу выложить
Это только для SDR SDRAM. Может быть чуть позже DDR буду смотреть

Yosys (OSS CAD)

с этой вещью дела никогда не имел

Само-собой вначале моделирование. Здесь вы полностью правы. В первом пункте статьи я это кратко упомянул. Просто не стал подробно расписывать, иначе объем статьи был бы слишком большим.

А про осциллограф - это наша железячная реальность :) В серии каких только косяков не встречал. Проблемы с питанием, лишние дорожки на плате. Не те номиналы или даже элементы, непропаи и прочее...

Моделирование - это только первый этап отладки. Но проблема в том, что 1 секунда моделирования занимает несколько минут реального времени. Много не намоделировать. А в железе - прогон можно запускать на часы или даже дни. Подтверждать работоспособность нужно в железе на практике.

Поэтому методика отладки должна быть такая:

  1. Моделирование отдельных модулей.

  2. Моделирование всей сборки (IP-блока)

  3. Прогон в железе.

Без третьего пункта - в серию изделия пускать нельзя.

Допускать ничего не надо, надо знать)

На пульте управления есть ключи для ручного управления рабочими органами (РО), как компенсирующими РО, так и РО АР.

Если авторегулятор неисправен - звучит громкий сигнал. Оператор подходит к пульту чтобы выключить этот дурацкий громкий звук, мешающий ему спать) Заодно и переключит систему на другой, исправный авторегулятор. Их там обычно два.

Но можно управлять и руками.

В принципе, если авторегулятор мощности неисправен, то никто не запрещает ручное управление. Хотя, это конечно не самый удобный вариант. Само по себе ручное управление - это штатный режим.

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

Если просто так выдернуть или коротнуть, то система это сразу увидит и даст АЗ. Но при желании и понимании как работает система, отключить можно всё)

Если совсем кратко про то где я участвовал.

Систему можно разделить на две части: управления и защиты, информации и архивации.

Про управление и защиту:

Прием первичных сигналов с датчиков. Это нейтронные параметры и технологические. Эти сигналы идут на три отдельных стойки в каждой из которых свой отдельный блок. Технология - это АЗТП, нейтронные параметры АКНП. Эта аппаратура обрабатывает первичный сигнал и по защищенному интерфейсу передает информацию в три отдельные блока логики. На каждый блок логики приходят три сигнала для каждого параметра. Логика их складывает по 2 из 3. Например если два сигнала от АКНП были аварийными (АЗ), то формируется обобщенный авариный сигнал (АЗ-ОБЩ), который идет от каждого блока на выходные реле. На этих реле 2 из 3 трех для АЗ-ОБЩ, от каждого блока логики. Затем уже суммарный сигнал идет на рабочие органы (стержни). Для каждого стержня свой блок реле 2 из 3. Сигнал АЗ - это отсутствие тока. Он размагничивает муфту и стрежень АЗ под своим весом вводится в активную зону.

Компания, где я работал, разрабатывала всё полностью сама. Начиная от печатных плат, заканчивая прошивками uC и FPGA. Сейчас они даже делают свои детекторы нейтронного потока. Это весьма сложное устройство, вроде еще такое умеют американцы, французы и аргентинцы.

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

Ну и само собой никаких скрамов и аджайлов там нет)

p.s. есть еще аппаратура авторегулятора мощности

Я не специалист по авиационной безопасности.

Но если вам интересно, могу кратко рассказать подход к разработке систем управления и защиты для атомных реакторов.

Всё начинается во время плановой перегрузки топлива. Гипотетический злоумышленник через скомпрометированного подрядчика или инсайдера получает доступ к Service Unit. Во время регламентных работ, когда инженер вставляет и поворачивает ключ для смены уставок, вредоносное ПО использует это «окно доверия».

На этом шаге всё и заканчивается. Когда я ездил на объекты, и если бы мне кто-то предложил залить левую прошивку... То я сразу бы доложил об этом своему главному конструктору или главному инженеру на объекте. Он бы доложил куда следует)

На объект никто просто так постороннему человеку зайти не даст. А уж тем более зайти туда, где стойки аппаратуры стоят. Это не проходной двор)

Так что это всё писал теоретик, далекий от темы.

Да, для асинхронного сброса нет защиты от метостабильности. Сигнал n_arst здесь напрямую идет на входы асинхронных сбросов всех триггеров. Это как возможность. Если она потребуется, то правильную последовательность сбросов нужно формировать снаружи.
Если снимать асинхронный сброс в произвольный момент, то может возникнуть такое, что это снятие произойдет в момент фронта клока.

Да верное замечание. Но из личного опыта - никогда не встречал двух мастеров на одной шине. I2C - обычно для настроек используется. Записать/прочитать EEPROM на плате, настроить тактовый генератор и тому подобное.
Что касается подтяжек - они обычно на платах сделаны. Но можно и на выходе ПЛИС pull-up поставить.

Спасибо)
На самом деле, на написание кода потратилось гораздо меньше времени, чем на статью. Оказывается писать статьи - не такой и простой труд)

Да, для многих вера и эмоции затмевают логику и здравый смысл)

Information

Rating
209-th
Registered
Activity

Specialization

Инженер встраиваемых систем, FPGA-developer
Ведущий
VHDL
FPGA
Разработка электроники