Перейти к содержанию
    

PAB

Свой
  • Постов

    85
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о PAB

  • Звание
    Частый гость
    Частый гость
  1. Добрый день! Имеется таск, предназначенный для приема пакета данных с некоторой шины, на которой возможен таймаут: task automatic dp_rxpkt( input bit [1:0] list_type, input bit response_act, ref bit fsls_rcv, ref bit fs_vplus, ref bit fs_vminus ); bit [6:0] timeout; wait(fs_vplus & !fs_vminus); //wait for IDLE state fork : timeout_or_pkt_receiption while(timeout < 73) begin : count_timeout @(posedge fs_clk); if(!response_act) timeout++; if(timeout == 72) $display("Timeout limit is reached. Device not responding @%0t", $time); end : count_timeout begin : normal_pkt_receiption wait(!fs_vplus & fs_vminus); ......... ......... end : normal_pkt_receiption join_any : timeout_or_pkt_receiption disable timeout_or_pkt_receiption; endtask QuestaSim 10.0a_1 ругается на строчку wait(!fs_vplus & fs_vminus); следующими словами: ** Error: (vlog-LRM-2295) Arguments passed by reference cannot be used within fork-join_any or fork_join_none blocks Почитал стандарт (IEEE1800-2009), не нашёл в нём ограничений на использование в блоках fork-join_any и fork-join_none переменных, передающихся по ссылке. QuestaSim 6.6b такой таск проглатывает нормально. Баг 10-ой версии квесты?
  2. Мне интересно ваше предложение. Куда выслать резюме?
  3. Плодо-овощному объединению ЗАО "Кузьминское" требуется элетромонтёр для постоянной работы в качестве оперативно-ремонтного персонала. Требования: Наличие группы IV свыше 1000В по электробезопасности Средне-специальное или высшее электротехническое образование Харакер работы: эксплуатация и ремонт электрооборудования 3-х трансформаторных подстанций напряжением 10/0,4 кВ. Зарплата: 25000-27000р. Адрес: Москва, Рязанский проспект, д. 4а (м. Рязанский проспект) Контактный телефон: 89859236731, Борис Петрович
  4. Я вроде делаю всё по стандарту. Пункт 15.14 (Synchronous drives), на стр.191 фраза: The event_count uses syntax similar to the cycle-delay operator (see Section 15.10), however the synchronous drive uses the clocking block of the signal being driven and not the default clocking. Попробовал с default'ным clocking блоком - результат тот же, ошибки остались. P.S. Ваша конструкция (repeat (n) @INTERF.cb) работает, но всё-таки хотелось бы использовать synchronous drives, т.к. просто влом писать repeat (n) @INTERF.cb; INTERF.cb.signal <= value; вместо: ##n INTERF.cb.signal <= value;
  5. Пытаюсь использовать задержу на несколько тактов clocking блока: program test(Rx_iol.TB Rx, ...); initial begin ........... ##2 Rx.cb.valid <= 1; ........... end ...... endprogram Однако QuestaSim 6.3d выдаёт ошибку: # ** Error: A default clocking block must be specified to use the ##n timing statement. Не понимаю, зачем определять дефолтный clocking блок если в интерфейсе Rx_iol определён клок, по которому должна происходить задержка: interface Rx_iol(input logic clk); logic [31:0] data; logic ready, valid; clocking cb @(posedge clk); output data, valid; input ready; endclocking modport DUT (input data, valid, output ready); modport TB (clocking cb); endinterface : Rx_iol Может кто подскажет, в чём проблема?
  6. Так вроде уже лежит /upload/Books/verilog/IEEE_1800-2007.pdf
  7. Я аппаратный анализатор протокола и имел ввиду когда говорил, что неплохо бы было увидеть пакеты. А программный естественно пакеты показать не сможет (разве что содержимое пакетов данных, да и то без идентификаторов и crc).
  8. да, протокол он показывает, но на уровне запросов, а не на уровне пакетов (а хотелось бы посмотреть именно последовательность пакетов т.к. в них могут быть какие-нибудь ошибки поскольку хост не покупной, а свой на ПЛИСине )) ) Может я чего не так понимаю, но из моего опыта запрос SetAddress проходит так: 1. Хост шлёт SETUP пакет по адресу=0 2. Хост шлёт пакет данных, в котором записан присваиваемый адрес устройства 3. Устройство отвечает ACK (может, не с первого раза, после нескольких NAKов) 4. Хост шлёт token in пакет по адресу 0 5. Устройство отвечает пакетом нулевой длины 6. Хост отправляет ACK После этого к девайсу можно обращаться по назначенному адресу Самая обычная клавиатура Genius. Я НИКОГДА не встречал USB клавиатур, работающих на full-speed. P.S. Мою первоначальную проблему удалось решить. Проблема была в том, что я (то есть хост) неправильно формировал преамбулу (к преамбуле добавлял последовательностью end-of-packet = 2*se0 + j - я думал, что преамбула такой же пакет как и все другие).
  9. Я уверен, что пакеты идут к low-speed устройству (поскольку они предваряются преамбулами). В моём случае только одно low-speed устройство - клавиатура. Программный анализатор протокола увы не удастся подцепить поскольку всё это хозяйство проверяется на машине, работающей под линуксом. По поводу запроса SetAddress: я и не утверждаю, что это первый запрос к устройству; я говорю лишь о том, что ситуация, когда в хаб передаются пакеты с преамбулами и до клавиатуры эти пакеты не доходят, происходит при запросе SetAddress. Возможна ли ситуация, когда этот запрос является первым?
×
×
  • Создать...