Jump to content

    

iosifk

Модераторы
  • Content Count

    4380
  • Joined

  • Last visited

Community Reputation

0 Обычный

About iosifk

  • Rank
    Гуру
  • Birthday 09/23/1952

Контакты

  • Сайт
    http://www.iosifk.narod.ru
  • ICQ
    0
  • Skype
    iosifk_mobil

Информация

  • Город
    спб

Старые поля

  • skype
    iosifk_mobil

Recent Profile Visitors

24372 profile views
  1. ПЛИС - схема цифровая. А вот ПАИС - аналого-цифровая. Это программируемая Аналоговая микросхема. И там можно "закодировать" аналоговые обрабатывающие схемы. Но дело в том, что усилители в ней плохие. Правда, если поищите, то в каких-то новых ПЛИС есть АЦП, кажется так... Но они не могут принципиально быть высокого качества.
  2. Так обычно всегда и бывает. Сначала "сделаем по минимуму". Потом "добавим". Потом еще "добавим". И вот уже надо и чип брать побольше. И с памятью..
  3. Так пишу же, что из каждого счетчика в 22 разряда, в регистрах можно оставить скажем 5 разрядов, а остальное переместить в память. Да и наверняка можно все то, что переносится в память убрать в один блок. Но это надо смотреть точнее. И модуль последовательного приема-передачи тоже переделать. И в итоге кристалл окажется почти пустым... Если захотите, подробно объясню, как и что...
  4. Я присоединяюсь к des00. Счетчики в 22 бита можно на 2/3 убрать в память. При этом "паровоз" может поехать и быстрее, чем на 24 Мгц. Да и кристалл будет почти пустой... Про п.1,2 вообще не говорю, уже все сказано.
  5. Ошибся я.. Не в Актелах, а в Акрониксах...
  6. А зачем "синхронизировать" сигнал от которого и так все должны синхронизироваться?
  7. Тут надо смотреть даташит... Вообще, как я помню, в больших чипах глобальные входы сначала идут на некий коммутатор, а только потом разводятся по кристаллу. И в этом коммутаторе выбирается источник сигнала и он переключается на нужное направление. А вот в больших Актелах функция привязки сброса к клокам вообще сделана аппаратно для каждого региона кристалла.
  8. Да, снимется на втором. Но ведь именно так и надо пропускать асинхронные сигналы через 2 триггера для синхронизации с тактовой. И если есть несколько клоковых доменов то Ксайлинкс в примере к ISE сделал такой модуль в каждом домене. А то, что сброс не будет сниматься "одновременно", то это так и должно быть. Ведь каждый домен работает независимо от других клоков...
  9. Пример Ксайлинкса.. Выставляется асинхронно, снимается под клоки данного региона. И в каждом регионе клоков вставляется вот такой модуль. //----------------------------------------------------------------------------- // // Copyright (c) 2008 Xilinx Inc. // // Project : Programmable Wave Generator // Module : reset_bridge.v // Parent : Various // Children : None // // Description: // This is a specialized metastability hardener intended for use in the // reset path. The reset will assert ASYNCHRONOUSLY when the input reset is // asserted, but will deassert synchronously. // // In designs with asynchronous reset flip-flops, this generates a reset // that can meet the "recovery time" requirement of the flip-flop (be sure // to enable the recovery time arc checking - ENABLE=reg_sr_r). // // In designs with synchronous resets, it ensures that the reset is // available before the first valid clock pulse arrives. // // Parameters: // None // // Notes : // // Multicycle and False Paths, Timing Exceptions // A tighter timing constraint should be placed between the rst_meta // and rst_dst flip-flops to allow for meta-stability settling time // `timescale 1ns/1ps module reset_bridge ( input clk_dst, // Destination clock input rst_in, // Asynchronous reset signal output reg rst_dst // Synchronized reset signal ); //*************************************************************************** // Register declarations //*************************************************************************** reg rst_meta; // After sampling the async rst, this has // a high probability of being metastable. // The second sampling (rst_dst) has // a much lower probability of being // metastable //*************************************************************************** // Code //*************************************************************************** always @(posedge clk_dst or posedge rst_in) begin if (rst_in) begin rst_meta <= 1'b1; rst_dst <= 1'b1; end else // if !rst_dst begin rst_meta <= 1'b0; rst_dst <= rst_meta; end // if rst end // always endmodule
  10. Да я все это понимаю. А ТС - нет. Поэтому напишу так. Помните, как идет экспонента в переходном процессе? За 3 "тау" - 95%... А 1% за сколько? А за сколько 0,1%??? И в этом случае этих "тау" будет сильно много.. Так же и с аппаратурой. Если хочется сделать "по-быстрому" то при этом проблем нет. Ну сбойнет, так перезапустим. Но как только непрерывный долговременный режим, да еще в индустриальных цепях... И требуется, чтобы сбоев было меньше, чем 0,1%... А представьте, вот сделали для ТС проект. И отказ или сбой типа зависания только в 0,1% случаев. Кажется - ерунда. Но при 1000 шт./мес это значит, что каждый месяц надо будет ехать к клиентам разбираться. 100 долл. за билет, плюс гостиница. А еще рекламации. И где прибыль? А тот, кто делал проект - у него договор выполнен и нареканий нет. Он же не дурак забивать в протокол испытаний всякие бяки. Доработки? Без проблем, но за большие деньги... Ищите книгу о "серебряной пуле". Там американец доказывает, что с увеличением сложности и объема проекта производительность труда резко уменьшается.
  11. Точно не помню, но кажется так. "узел A должен отправлять" посылку, в которой все биты идут тем же уровнем, что и стартовый. Это позволяет "узлу B" поймать посылку, даже если его тактовая гораздо ниже. Эту посылку "узел B" ловит и смотрит, что получил. Если в принятой посылке находятся биты другого уровня, то "узел B" должен пересчитать свою скорость...
  12. И даже более того. Каждый производитель чипа для счетчика - это и ADI и TI и др. продадут или даже подарят стартовый набор со всем содержимым. А при миллионных сериях еще и своего инженера предоставят для консультаций. Правда в стартовом наборе возможно не будет обработки каких-нибудь аварийных сбоев или еще каких частностей - это уже дело разработчика. Но основа там точно есть...
  13. Я дополню... Хотя бы даже не код, а словесное описание или блок-схему алгоритма...
  14. А почему сразу не сделать это в явном виде. Ведь Вам дали ссылку на Клиффа: Guideline: Use blocking assignments in always blocks that are written to generate combinational logic [1]. Guideline: Use nonblocking assignments in always blocks that are written to generate sequential logic [1]. Но Вы это игнорируете... И еще. Вам действительно надо сделать что-то вроде этого: brd_err2[3] = in_data[3] || in_data[2] || in_data[1] || in_data[0]; только за один такт? С какой скоростью в проект "прибывают" данные и какая частота у "clk"? Может быть можно успеть все эти вычисления сделать и по-другому? А главный вопрос вот какой: какой смысл делать вот так: " Намеренно использую при этом блокирующее присваивание, так код получается коротким и хорошо читаемым."? Если потом приходится более 20-то часов выяснять как преодолеть проблему данного кода. И проблема еще не решена. Потому как если даже Вы заставите программные инструменты сделать "как надо" сегодня, то через полгода-год появится новая версия софта и возможно проблемы выплывет снова. IMXO, за 20 часов можно переделать проект так, чтобы наверняка не было никаких проблем...
  15. Так это же человек-невидимка. Почты - нет, Телефона - нет, Сайта - нет, Публикаций - нет. Где хоть какие-нибудь гарантии? И зачем здесь тратить время на подробности?