|
|
  |
Устройство обнаружения пакетов данных заданного формата |
|
|
|
Nov 10 2016, 22:39
|
Группа: Участник
Сообщений: 5
Регистрация: 10-11-16
Пользователь №: 94 144

|
Всем здравствуйте! Начинаю с самых азов проектирования на ПЛИС. Задача такая: нужно разработать на языке VHDL и провести полный цикл моделирования IP-блока устройства обнаружение пакетов данных заданного формата в последовательном цифровом потоке для ПЛИС инструментального модуля Spartan 3E. Начала я с разработки структурной и функциональной схем. Ниже привела результаты того, что получилось и хочу спросить авторитетного мнения. Скажите пожалуйста, корректны ли составленные схемы или может что-то стоит добавить-изменить. Просьба с пониманием отнестись к возможным ошибкам. 
|
|
|
|
|
Nov 11 2016, 01:50
|

Местный
  
Группа: Участник
Сообщений: 201
Регистрация: 28-07-16
Пользователь №: 92 747

|
Цитата(yulia_plic @ Nov 10 2016, 22:39)  Начала я с разработки структурной и функциональной схем. Эт хорошо. Цитата(yulia_plic @ Nov 10 2016, 22:39)  Ниже привела результаты того, что получилось и хочу спросить авторитетного мнения. Мое мнение не авторитетно, но результат в первом приближении похож на правду. Единственное, будут ли это модули в HDL-терминологии? Просто все это счастье помещается в несколько веток конечного автомата из нескольких строк кода каждая. Разве что в учебных целях по модулям тонким слоем размазать... Цитата(yulia_plic @ Nov 10 2016, 22:39)  Скажите пожалуйста, корректны ли составленные схемы или может что-то стоит добавить-изменить. Критерии корректности определяются постановкой задачи. Поскольку задача поставлена в очень общем и абстрактном виде, то сложно судить о "добавить-изменить". Насколько я помню, на оформление функциональных схем строгих требований нет, поэтому сами смотрите как там у вас требуют это рисовать. Можете, например, по SADT/IDEF0 оформить.
--------------------
"Классики марксизма говорили, что общественно-экономическая формация меняется с изменением средств производства, которые всегда принадлежали имущему классу. И сейчас мы находимся в системе координат капитализма, когда самые передовые средства производства принадлежат уже не капиталистам. Люди, у которых нет обуви, имеют гаджеты. Сейчас создана такая информационная паутина, что вместо коллективного бессознательного можно говорить о коллективном сознании. Если иметь мозги и гаджеты, можно перевернуть весь мир. Коллективное сознание будет управлять миром! Это исторический путь, который нельзя миновать." Вячеслав Мальцев
|
|
|
|
|
Nov 11 2016, 03:17
|
Группа: Участник
Сообщений: 5
Регистрация: 10-11-16
Пользователь №: 94 144

|
Цитата(BackEnd @ Nov 11 2016, 03:50)  Эт хорошо. Мое мнение не авторитетно, но результат в первом приближении похож на правду. BackEnd большое спасибо за ответ и за совет. Просто важно было знать вообще в правильном направлении ли двигаюсь. Цитата(BackEnd @ Nov 11 2016, 03:50)  Единственное, будут ли это модули в HDL-терминологии? Просто все это счастье помещается в несколько веток конечного автомата из нескольких строк кода каждая. Разве что в учебных целях по модулям тонким слоем размазать... Ну да, это только в учебных целях придется как-то реализовывать модульность в HDL-терминологии. Ох пока что даже не представляю как это все будет выглядеть, и что будут представлять из себя эти ветки. Для вас это все легко, а вот чтоб мне понять, нужно не одни сутки еще лазить и сидеть за литературой Цитата(BackEnd @ Nov 11 2016, 03:50)  Критерии корректности определяются постановкой задачи. Поскольку задача поставлена в очень общем и абстрактном виде, то сложно судить о "добавить-изменить". Насколько я помню, на оформление функциональных схем строгих требований нет, поэтому сами смотрите как там у вас требуют это рисовать. Можете, например, по SADT/IDEF0 оформить. Я тоже подумала изначально, что какой-то слишком общий вид, какие именно кадры и вообще нужно ли их сохранять куда-то или просто пропускать дальше. Ладно буду уточнять у куратора эти вопросы
|
|
|
|
|
Nov 14 2016, 15:09
|
Группа: Участник
Сообщений: 5
Регистрация: 10-11-16
Пользователь №: 94 144

|
Снова здравствуйте. Уточнила насчет формата кадра. Это будет ATM-ячейка размером 52 байта. На рисунке она представлена. Процесс считывания исходя из структуры ячейки будет следующий: 1)считывание 52 байт в память (регистровую например) 2)разбираем заголовок: 2.1 проверяем на совпадение с последовательностью IA 2.2 проверяем четность заголовка по HEC 3)разбираем данные: 3.1 проверяем данные по алгоритму CRC16 3.2 проверяем конец, чтобы там присутствовала последовательность PAD Очень прошу помощи опять же по поводу структурной и функциональной схем.  Что изменится и как они примерно будут выглядеть для ATM-ячеек. Как я понимаю для начала нужно добавить память?!
Сообщение отредактировал yulia_plic - Nov 14 2016, 15:11
|
|
|
|
|
Nov 14 2016, 15:18
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(yulia_plic @ Nov 14 2016, 18:09)  Очень прошу помощи опять же по поводу структурной и функциональной схем.  Что изменится и как они примерно будут выглядеть для ATM-ячеек. Как я понимаю для начала нужно добавить память?! У Вас есть скайп? Можем поговорить? Мой адрес - в личной карточке участника форума...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Nov 14 2016, 16:10
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Ув. yulia_plicНе знаю точно, как от Вас требуется по условию задачи, но вообще так. Подсчет контрольной суммы осуществляется на лету. Согласно стандарту необходимо иметь автомат конечных состояний с тремя состояниями: HUNT, PRE-SYNC и SYNC. После вхождения в синхронизм по синхрозаголовку (HEC 8) данные готовы к разбору и подсчету контрольной суммы CRC16 (тоже считаем на лету). Не уверен, что PAD 16 вообще стоит учитывать при наличии контрольных сумм. Подробнее смотрите в книге М. Вернер «Основы кодирования», стр. 213. На Verilog это может выглядеть так: Код parameter //atmBytes = 53, ValidCounterInit = 9'd423, // [{atmBytes * 8) - 1] ValidCounterWidth = 9, LockUpCause = 5, LockDownCause = 5;
parameter DemuxHunt = 2'b01, DemuxPreSync = 2'd10, DemuxSync = 2'd11; Код always @ (posedge clk) begin if (~rst) begin crc_ <= 8'd0; atm <= 40'd0; end else if (demuxFlowClk) begin // crc_[7:0] <= {crc_[7:6], crc_[5]^atm[39], crc_[4]^atm[39], ... // crc_[3:2], crc_[1]^crc_[7], crc_[0]^crc_[7]^atm[39], crc_[7]^demuxFlow}; crc_[0] <= crc_[7]^demuxFlow; crc_[1] <= crc_[0]^crc_[7]^atm[39]; crc_[2] <= crc_[1]^crc_[7]; crc_[3] <= crc_[2]; crc_[4] <= crc_[3]; crc_[5] <= crc_[4]^atm[39]; crc_[6] <= crc_[5]^atm[39]; crc_[7] <= crc_[6]; atm[39:0] <= {atm[39:0], demuxFlow}; end end
assign crcValid = ~|crc_ & (flowCtrlReg0 == 8'h73);
always @ (posedge clk) begin if (~rst) begin validCounter <= ValidCounterInit; demuxStatus <= 0; upCounter <= 0; downCounter <= 0; end
else if (demuxFlowClk) begin if (|validCounter & (~crcValid | demuxSync)) validCounter <= validCounter - 1; else validCounter <= ValidCounterInit;
if (demuxHunt) begin // HUNT if (crcValid & demuxCycleEvent) demuxStatus <= DemuxPreSync; upCounter <= 0; downCounter <= 0; end else if (demuxPreSync) begin // PRESYNC if (crcValid & demuxCycleEvent) begin if (~lockUp) upCounter <= upCounter + 1; else demuxStatus <= DemuxSync; end else if (crcValid ^ demuxCycleEvent) demuxStatus <= DemuxHunt; end else if (demuxSync) begin // SYNC if (crcValid ^ demuxCycleEvent) begin if (~lockDown) downCounter <= downCounter + 1; else demuxStatus <= DemuxHunt; end else if (crcValid & demuxCycleEvent) downCounter <= 0;
end else demuxStatus <= DemuxHunt; end end
assign demuxCycleEvent = (~|validCounter); assign lockUp = (upCounter == LockUpCause); assign lockDown = (downCounter == LockDownCause); assign demuxHunt = (demuxStatus == DemuxHunt); assign demuxPreSync = (demuxStatus == DemuxPreSync); assign demuxSync = (demuxStatus == DemuxSync);
assign demuxLock = crcValid & demuxSync;
wire [7:0] flowCtrlReg0 = atm[39:32]; wire [7:0] flowCtrlReg1 = atm[31:24]; wire [7:0] flowCtrlReg2 = atm[23:16]; wire [7:0] flowCtrlReg3 = atm[15:8]; wire [7:0] crcDataReg = atm[7:0];
Сообщение отредактировал x736C - Nov 14 2016, 16:42
|
|
|
|
|
Nov 14 2016, 17:10
|
Группа: Участник
Сообщений: 5
Регистрация: 10-11-16
Пользователь №: 94 144

|
Цитата(iosifk @ Nov 14 2016, 17:18)  У Вас есть скайп? Можем поговорить? Мой адрес - в личной карточке участника форума... Здравствуйте. Есть да, но сейчас я нахожусь в командировке, на практике, где мне и поставили такую задачу, и, к сожалению, не имею возможности выйти на связь, но могу свободно общаться через личные сообщения. Если вам не трудно, пожалуйста, подскажите какие блоки стоит добавить или что изменить в моих схемах? В любом случае по приезду обязательно с удовольствием свяжусь с вами, потому что буду иметь дело еще со множеством задач в этой области и буду признательна в любой помощи. Цитата(x736C @ Nov 14 2016, 18:10)  Ув. yulia_plic Не знаю точно, как от Вас требуется по условию задачи, но вообще так. Здравствуйте. Спасибо огромное вам, даже с литературой помогли и с кодом, спасибо большое  . Скажите пожалуйста, что именно точно вам нужно сказать? Мне нужно разработать на VHDL и провести полный цикл моделирования IP-блока в САПР Xilinx ISE устройства обнаружения пакетов данных заданного формата в последовательном цифровом потоке. Форматом пакета является ATM-ячейка вида, представленного на рисунке. Цитата(x736C @ Nov 14 2016, 18:10)  Подсчет контрольной суммы осуществляется на лету. Согласно стандарту необходимо иметь автомат конечных состояний с тремя состояниями: HUNT, PRE-SYNC и SYNC.
После вхождения в синхронизм по синхрозаголовку (HEC 8) данные готовы к разбору и подсчету контрольной суммы CRC16 (тоже считаем на лету). Не уверен, что PAD 16 вообще стоит учитывать при наличии контрольных сумм.
Подробнее смотрите в книге [link=http://caxapa.ru/thumbs/409009/Osnovy_kodirovaniya__M._VERNER_.pdf]М. Вернер «Основы кодирования»[/link], стр. 213. Последовательность действий должна быть такого вида, который я писала в предыдущем сообщении, и по заданию PAD также нужно учитывать в самом конце (хотя я с вами согласна). Еще плюс ко всему мне упростили задачу, определив поле HEC 8 как поле контроля четности. На самом деле ,по стандарту, HEC должен являться результатом деления по модулю 2, четырех байтов заголовка на полином x^8+x^2+x+1. Вот. Еще раз хотела поблагодарить вас за такой подробный ответ, спасибо большое)
|
|
|
|
|
Nov 14 2016, 19:27
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(yulia_plic @ Nov 14 2016, 20:10)  Здравствуйте. Есть да, но сейчас я нахожусь в командировке, на практике, где мне и поставили такую задачу, и, к сожалению, не имею возможности выйти на связь, но могу свободно общаться через личные сообщения. Если вам не трудно, пожалуйста, подскажите какие блоки стоит добавить или что изменить в моих схемах? В любом случае по приезду обязательно с удовольствием свяжусь с вами, потому что буду иметь дело еще со множеством задач в этой области и буду признательна в любой помощи. Расклад такой. Вы нарисовали некую блок-схему... А до этого надо нарисовать две картинки. Первая называется "алгоритм вычислений" вот по такой методике: Блок-схема процесса http://club.shelek.ru/viewart.php?id=178А вторая картинка должна называться "блок-схема вычислителя" и она следует из первой. А чтобы было понятней - у меня на сайте есть файл о гайке М3... Кстати, обычно в гостинице или в кафе есть бесплатный WiFi.... Удачи.
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Nov 14 2016, 20:29
|
Группа: Участник
Сообщений: 5
Регистрация: 10-11-16
Пользователь №: 94 144

|
Цитата(iosifk @ Nov 14 2016, 21:27)  Расклад такой. Вы нарисовали некую блок-схему... А до этого надо нарисовать две картинки. Первая называется "алгоритм вычислений" вот по такой методике: Блок-схема процесса http://club.shelek.ru/viewart.php?id=178А вторая картинка должна называться "блок-схема вычислителя" и она следует из первой. А чтобы было понятней - у меня на сайте есть файл о гайке М3... Кстати, обычно в гостинице или в кафе есть бесплатный WiFi.... Удачи. Спасибо за ответ. Буду изучать ваши материалы. Сайт сразу заметила, про гайку М3 тоже успела прочитать. Да ясное дело есть, проблема в том, что живу не одна. Но я постараюсь все равно выйти на связь в ближайшее время.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|