реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Устройство обнаружения пакетов данных заданного формата
yulia_plic
сообщение Nov 10 2016, 22:39
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 10-11-16
Пользователь №: 94 144



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



Go to the top of the page
 
+Quote Post
BackEnd
сообщение Nov 11 2016, 01:50
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 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 оформить.


--------------------
"Классики марксизма говорили, что общественно-экономическая формация меняется с изменением средств производства, которые всегда принадлежали имущему классу.
И сейчас мы находимся в системе координат капитализма, когда самые передовые средства производства принадлежат уже не капиталистам.
Люди, у которых нет обуви, имеют гаджеты. Сейчас создана такая информационная паутина, что вместо коллективного бессознательного можно говорить о коллективном сознании.
Если иметь мозги и гаджеты, можно перевернуть весь мир. Коллективное сознание будет управлять миром! Это исторический путь, который нельзя миновать."
Вячеслав Мальцев
Go to the top of the page
 
+Quote Post
yulia_plic
сообщение Nov 11 2016, 03:17
Сообщение #3





Группа: Участник
Сообщений: 5
Регистрация: 10-11-16
Пользователь №: 94 144



Цитата(BackEnd @ Nov 11 2016, 03:50) *
Эт хорошо.
Мое мнение не авторитетно, но результат в первом приближении похож на правду.

BackEnd большое спасибо за ответ и за совет. Просто важно было знать вообще в правильном направлении ли двигаюсь.
Цитата(BackEnd @ Nov 11 2016, 03:50) *
Единственное, будут ли это модули в HDL-терминологии? Просто все это счастье помещается в несколько веток конечного автомата из нескольких строк кода каждая. Разве что в учебных целях по модулям тонким слоем размазать...

Ну да, это только в учебных целях придется как-то реализовывать модульность в HDL-терминологии. Ох пока что даже не представляю как это все будет выглядеть, и что будут представлять из себя эти ветки. Для вас это все легко, а вот чтоб мне понять, нужно не одни сутки еще лазить и сидеть за литературой crying.gif
Цитата(BackEnd @ Nov 11 2016, 03:50) *
Критерии корректности определяются постановкой задачи. Поскольку задача поставлена в очень общем и абстрактном виде, то сложно судить о "добавить-изменить".
Насколько я помню, на оформление функциональных схем строгих требований нет, поэтому сами смотрите как там у вас требуют это рисовать. Можете, например, по SADT/IDEF0 оформить.

Я тоже подумала изначально, что какой-то слишком общий вид, какие именно кадры и вообще нужно ли их сохранять куда-то или просто пропускать дальше. Ладно буду уточнять у куратора эти вопросы smile3046.gif
Go to the top of the page
 
+Quote Post
yulia_plic
сообщение Nov 14 2016, 15:09
Сообщение #4





Группа: Участник
Сообщений: 5
Регистрация: 10-11-16
Пользователь №: 94 144



Снова здравствуйте. Уточнила насчет формата кадра. Это будет ATM-ячейка размером 52 байта. На рисунке она представлена.
Процесс считывания исходя из структуры ячейки будет следующий:

1)считывание 52 байт в память (регистровую например)

2)разбираем заголовок:
2.1 проверяем на совпадение с последовательностью IA
2.2 проверяем четность заголовка по HEC

3)разбираем данные:
3.1 проверяем данные по алгоритму CRC16
3.2 проверяем конец, чтобы там присутствовала последовательность PAD

Очень прошу помощи опять же по поводу структурной и функциональной схем. help.gif Что изменится и как они примерно будут выглядеть для ATM-ячеек. Как я понимаю для начала нужно добавить память?!




Сообщение отредактировал yulia_plic - Nov 14 2016, 15:11
Go to the top of the page
 
+Quote Post
iosifk
сообщение Nov 14 2016, 15:18
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(yulia_plic @ Nov 14 2016, 18:09) *
Очень прошу помощи опять же по поводу структурной и функциональной схем. help.gif Что изменится и как они примерно будут выглядеть для ATM-ячеек. Как я понимаю для начала нужно добавить память?!

У Вас есть скайп? Можем поговорить?
Мой адрес - в личной карточке участника форума...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
x736C
сообщение Nov 14 2016, 16:10
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
yulia_plic
сообщение Nov 14 2016, 17:10
Сообщение #7





Группа: Участник
Сообщений: 5
Регистрация: 10-11-16
Пользователь №: 94 144



Цитата(iosifk @ Nov 14 2016, 17:18) *
У Вас есть скайп? Можем поговорить?
Мой адрес - в личной карточке участника форума...


Здравствуйте. Есть да, но сейчас я нахожусь в командировке, на практике, где мне и поставили такую задачу, и, к сожалению, не имею возможности выйти на связь, но могу свободно общаться через личные сообщения. Если вам не трудно, пожалуйста, подскажите какие блоки стоит добавить или что изменить в моих схемах? В любом случае по приезду обязательно с удовольствием свяжусь с вами, потому что буду иметь дело еще со множеством задач в этой области и буду признательна в любой помощи.

Цитата(x736C @ Nov 14 2016, 18:10) *
Ув. yulia_plic
Не знаю точно, как от Вас требуется по условию задачи, но вообще так.

Здравствуйте. Спасибо огромное вам, даже с литературой помогли и с кодом, спасибо большое rolleyes.gif .
Скажите пожалуйста, что именно точно вам нужно сказать?
Мне нужно разработать на 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. Вот.
Еще раз хотела поблагодарить вас за такой подробный ответ, спасибо большое)
Go to the top of the page
 
+Quote Post
iosifk
сообщение Nov 14 2016, 19:27
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 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
Go to the top of the page
 
+Quote Post
yulia_plic
сообщение Nov 14 2016, 20:29
Сообщение #9





Группа: Участник
Сообщений: 5
Регистрация: 10-11-16
Пользователь №: 94 144



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


Спасибо за ответ. Буду изучать ваши материалы. Сайт сразу заметила, про гайку М3 тоже успела прочитать.
Да ясное дело есть, проблема в том, что живу не одна. Но я постараюсь все равно выйти на связь в ближайшее время.
Go to the top of the page
 
+Quote Post
GAYVER
сообщение Dec 13 2016, 11:25
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 3-04-13
Пользователь №: 76 333



у одного меня возникает стойкое очучение что даже 4 байта в заголовке не является 100%-й гарантией того, что среди 40 байт данных не попадется такой же последовательности? сталкивался с некорректно написанной моделью флэшки, в которой не стояло доп.защиты от этого дела. и получалось что после подачи команды в 2 байта, стартовал поток данных на 1М. в котором таки попадалась последовательность из 2 байт, которая воспринималась моделью как очередная команда. соответственно текущая операция прерывалась и стартовала новая.

даже с учетом того что стартовая последовательность у вас 4 байта а не 2, и поле данных не 1М, а всего 40 байт - все же предусмотрите механизм, блокирующий работу "модуля распознавания заголовка" в процессе вычитывания данных
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01472 секунд с 7
ELECTRONIX ©2004-2016