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

Tanichev

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
    Участник

Посетители профиля

516 просмотров профиля
  1. ADF7242

    Если бы бюджета по TX не хватало, то мы бы не смогли добиться нормальной передачи при вносимом затухании 75 дБ. Ещё раз: Eval Board Tx ---> аттенюатор до 75 дБ ---> Rx наша плата Eval Board Rx <--- аттенюатор до 20 дБ <--- Tx наша плата Наша плата Rx <--- аттенюатор до 20 дБ <--- Tx наша плата Если бы несущие Tx и Rx были бы сдвинуты, то, опять же, у нас была бы одинаково плохая связь в обе стороны. Это, ведь готовый трансивер, мы не можем особо влиять на бейсбенд, мы можем лишь менять скорость передачи. В-общем, мне не понятно, куда деваются 55 дБ))
  2. ADF7242

    Катушки такие бывают)) Дело даже не в фильтрах, т.к. включал и без них, разницы нет
  3. ADF7242

    Исходные данные: трансивер у нас используется для передачи потокового видео с такими параметрами: 2 Mbps, GFSK, пакетный режим, данные передаются по SPI. Управляет трансивером FPGA Xilinx XC4VLX80. Чувствительность по даташиту на данной скорости: −87.5 dBm Даташит ADF7242 Суть проблемы: При достаточном уровне выходного сигнала (-2 dBm - измерено спектроанализатором) вносится затухание регулируемым аттенюатором. Если затухание 20 dB или больше, приёмник начинает "терять" пакеты. Однако, если в качестве передатчика использовать Evaluation Board (он также подключается через SPI к FPGA), при этом принимающий блок остаётся самодельный, то пакеты начинают "теряться" только при затухании 75 dB. Уровень выходного сигнала отладочной платы +2 dBm. Evaluation board: Спектры выходного сигнала самодельного блока и Evaluation board схожи. Далее прилагаю схему и разводку. Правда позже выяснилось, что балун на нашей плате включен неправильно, в качестве временной меры я сделал балун из катушек индуктивности и конденсаторов (как на Evaluation board). Вот так это теперь выглядит: Собственно вопрос: Что мы делаем не так?
  4. Может я не понял что-то, но вы пытаетесь преобразовать тип в указатель, хотя у вас переменная A не указатель. А ещё у вас массив содержит только 4 элемента 0...3, обращение к элементу номер 5 будет выходом за пределы массива. Я бы это написал так (для четвёрого элемента): A = (u16)(B[3]);
  5. Спасибо! Я пользовался файлом UCF только для назначения выводов, т.к. больше про него ни чего не знал. Буду разбираться! Ещё раз спасибо!
  6. Ну вот.. а я даже не знаю что такое констрейны, если не сложно, поясните пожалуйста :rolleyes:
  7. Вопрос к гуру по ПЛИСненским делам: Создал в ISE проект некоторого периферийного модуля с шиной FSL, проверяю его работу без проца - просто залил проект в плисину. Использую внешний логический анализатор - всё работает именно так, как нужно. Но когда я добавляю свой блок с платформе с MicroBlaze, в работе модуля не всегда, но часто наблюдаются глюки типа: какой-либо сигнал, выходящий наружу, не работает, читаются неправильные значения из внутренних переменных... и т.д. При компиляции нет ни варнингов, ни ерорров указывающих на мой блок. Очень прошу помочь тех, кто знает решение этой проблемы. Заранее СПАСИБО!
  8. По мере работы с процессором появляются новые вопросы. Следующая "неадекватность" в работе программы проявилась в передаче указателя строки и последующего вывода её через ETHERNET. Код такой: TCPStringSend("SETUP rtsp://192.168.1.57:554/video.mp4/trackID=1 RTSP/1.0\r\nCSeq: 2\r\nUser-Agent: LibVLC/1.1.10 (LIVE555 Streaming Media v2011.05.25)\r\nTransport: RTP/AVP;unicast;client_port=54884-54885\r\nSession: 327b23c6643c9869\r\n\r\n"); TCPStringSend("QETUP rtsp://192.168.1.57:554/video.mp4/trackID=1 RTSP/1.0\r\nCSeq: 2\r\nUser-Agent: LibVLC/1.1.10 (LIVE555 Streaming Media v2011.05.25)\r\nTransport: RTP/AVP;unicast;client_port=54884-54885\r\nSession: 327b23c6643c9869\r\n\r\n"); TCPStringSend("PLAY rtsp://192.168.1.57:554/video.mp4/ RTSP/1.0\r\nCSeq: 3\r\nUser-Agent: LibVLC/1.1.10 (LIVE555 Streaming Media v2011.05.25)\r\nSession: 327b23c6643c9869\r\nRange: npt=0.000-\r\n\r\n"); В ходе решения проблемы я временно ограничил вывод строк 100 символами. В итоге, такие пакеты были получены компом (выделена область, содержащая строку): Пакет номер РАЗ: Пакет номер ДВА: Пакет номер ТРИ: Видно, что строка №1 дошла коряво. При этом были попытки заранее определить строки, сделать их переменными, но именно 3 строки отправлялись с глюками (две и одна - нормально). Я проверил содержание elf файла, но там все три строки хранятся правильно: Подскажите пожалуйста где я мог ошибиться. Спасибо PS Приведу на всякий случай коды своих процедур: int TCPStringSend(const char *DataBuffer) { u16 DataSize = 0; //while(/*DataBuffer[DataSize]*/*(DataBuffer + DataSize) != 0) DataSize++; TCPPackageSend(&SOURCE_IP_ADDRESS[0], &DESTINATION_IP_ADDRESS[0], DEVICE_DEFAULT_PORT, RTSP_DEFAULT_PORT, TCP_PSH | TCP_ACK, 0, DataBuffer, /*DataSize*/100); TCPClSequenceNum = TCPClSequenceNum + DataSize; return 0; } int TCPDataSend(const char *DataBuffer, u16 DataSize) { TCPPackageSend(&SOURCE_IP_ADDRESS[0], &DESTINATION_IP_ADDRESS[0], DEVICE_DEFAULT_PORT, RTSP_DEFAULT_PORT, TCP_PSH | TCP_ACK, 0, DataBuffer, DataSize); TCPClSequenceNum = TCPClSequenceNum + DataSize; return 0; } void TCPPackageSend(u8 *SourceIPAddr, u8 *DestinationIPAddr, u16 SourcePort, u16 DestinationPort, u8 Flags, u8 AddOptions, const char *DataBuffer, u16 DataSize) { u8 BufferToSend[1500]; u8 HeaderLength = 20; u16 BytesCounter = 0; u16 PacketLength = 0; u16 HeaderCheckSum = 0x0000; if(AddOptions == 1) { PacketLength = DataSize + 32; BufferToSend[20] = 0x02; BufferToSend[21] = 0x04; BufferToSend[22] = 0x05; BufferToSend[23] = 0xB4; BufferToSend[24] = 0x01; BufferToSend[25] = 0x03; BufferToSend[26] = 0x03; BufferToSend[27] = 0x08; BufferToSend[28] = 0x01; BufferToSend[29] = 0x01; BufferToSend[30] = 0x04; BufferToSend[31] = 0x02; HeaderLength = 32; PacketLength = DataSize + HeaderLength; for(BytesCounter = HeaderLength; BytesCounter < PacketLength; BytesCounter++) BufferToSend[BytesCounter] = DataBuffer[BytesCounter - HeaderLength]; } else { HeaderLength = 20; PacketLength = DataSize + HeaderLength; for(BytesCounter = HeaderLength; BytesCounter < PacketLength; BytesCounter++) BufferToSend[BytesCounter] = DataBuffer[BytesCounter - HeaderLength]; } BufferToSend[0] = (u8)((SourcePort & 0xFF00) >> 8); //Порт отправителя BufferToSend[1] = (u8)(SourcePort & 0x00FF); BufferToSend[2] = (u8)((DestinationPort & 0xFF00) >> 8); //Порт получателя BufferToSend[3] = (u8)(DestinationPort & 0x00FF); BufferToSend[4] = (u8)((TCPClSequenceNum & 0xFF000000) >> 24); BufferToSend[5] = (u8)((TCPClSequenceNum & 0x00FF0000) >> 16); BufferToSend[6] = (u8)((TCPClSequenceNum & 0x0000FF00) >> 8); BufferToSend[7] = (u8)(TCPClSequenceNum & 0x000000FF); BufferToSend[8] = (u8)((TCPSrvSequenceNum & 0xFF000000) >> 24); BufferToSend[9] = (u8)((TCPSrvSequenceNum & 0x00FF0000) >> 16); BufferToSend[10] = (u8)((TCPSrvSequenceNum & 0x0000FF00) >> 8); BufferToSend[11] = (u8)(TCPSrvSequenceNum & 0x000000FF); BufferToSend[12] = HeaderLength * 4; BufferToSend[13] = Flags; BufferToSend[14] = (u8)((TCP_WINDOW_SIZE & 0xFF00) >> 8); BufferToSend[15] = (u8)(TCP_WINDOW_SIZE & 0x00FF); BufferToSend[16] = 0; BufferToSend[17] = 0; BufferToSend[18] = 0; BufferToSend[19] = 0; HeaderCheckSum = tcp_sum_calc(PacketLength, SourceIPAddr, DestinationIPAddr, 0, &BufferToSend[0]); BufferToSend[16] = (u8)((HeaderCheckSum & 0xFF00) >> 8); //Контрольная сумма BufferToSend[17] = (u8)(HeaderCheckSum & 0x00FF); IPPackageSend(SourceIPAddr, DestinationIPAddr, TCP_PROTOCOL_TYPE, &BufferToSend[0], PacketLength); }
  9. Полистал форум, не нашёл ответ на свой вопрос: - Создал я платформу в XPS, - Написал и отладил программу в EDK - всё отлично работает - Пришла пора записать готовую программу на плату - удалён модуль DEBUG из системы, проект собран в Release.. - Флэшка прошита (файл для флэш получен из download.bit) - НО! Программа "ждёт", что я нажму на кнопку в SDK: А нажать на неё я уже не могу, т.к. модуля DEBUG нет, да и вообще, платформа должна стать автономной. Видимо, где-то установлена какая-то галочка, которая меняет режим компилятора, я думал, что это переключается Debug/Release. Но видимо нет. Подскажите пожалуйста, где это делается. Спасибо.
  10. Собирал платформу вручную, видимо. не нашёл, где и что указывать. Через визард работает. Спасибо за ответы
  11. А почему у меня он всего один? Ведь XPS уже всё сделал. А это возможно вбить вручную? Как понимать эти координаты? Спасибо.
  12. Пытаюсь собрать системку с MicroBlaze на Virtex-4 XC4VLX80. XPS собирает платформу нормально. Использую только BRAM. Затем, при попытке собрать прошивку вот так ругается: ERROR:Data2MEM:47 - Not all BitLanes in ADDRESS_SPACE 'microblaze_0.bram_block_0_combined' have BMM location constraints. Some data for this ADDRESS_SPACE may be lost during BIT file replacement. Verify that the BMM file has location constraints for all BitLanes. Bitlane(s) ---------------- bram_block_0/bram_block_0/ramb16_0 [31:31] bram_block_0/bram_block_0/ramb16_1 [30:30] bram_block_0/bram_block_0/ramb16_2 [29:29] bram_block_0/bram_block_0/ramb16_3 [28:28] bram_block_0/bram_block_0/ramb16_4 [27:27] bram_block_0/bram_block_0/ramb16_5 [26:26] bram_block_0/bram_block_0/ramb16_6 [25:25] bram_block_0/bram_block_0/ramb16_7 [24:24] bram_block_0/bram_block_0/ramb16_8 [23:23] bram_block_0/bram_block_0/ramb16_9 [22:22] bram_block_0/bram_block_0/ramb16_10 [21:21] bram_block_0/bram_block_0/ramb16_11 [20:20] bram_block_0/bram_block_0/ramb16_12 [19:19] bram_block_0/bram_block_0/ramb16_13 [18:18] bram_block_0/bram_block_0/ramb16_14 [17:17] bram_block_0/bram_block_0/ramb16_15 [16:16] bram_block_0/bram_block_0/ramb16_16 [15:15] bram_block_0/bram_block_0/ramb16_17 [14:14] bram_block_0/bram_block_0/ramb16_18 [13:13] bram_block_0/bram_block_0/ramb16_19 [12:12] bram_block_0/bram_block_0/ramb16_20 [11:11] bram_block_0/bram_block_0/ramb16_21 [10:10] bram_block_0/bram_block_0/ramb16_22 [9:9] bram_block_0/bram_block_0/ramb16_23 [8:8] bram_block_0/bram_block_0/ramb16_24 [7:7] bram_block_0/bram_block_0/ramb16_25 [6:6] bram_block_0/bram_block_0/ramb16_26 [5:5] bram_block_0/bram_block_0/ramb16_27 [4:4] bram_block_0/bram_block_0/ramb16_28 [3:3] bram_block_0/bram_block_0/ramb16_29 [2:2] bram_block_0/bram_block_0/ramb16_30 [1:1] bram_block_0/bram_block_0/ramb16_31 [0:0] FPGA Programming Failed due to errors while initializing bitstream. Я не могу понять, как собственно должен выглядеть этот файл :laughing: (он его сгенерил автоматически). Вот его содержание: // BMM LOC annotation file. // // Release 12.2 - Data2MEM M.63c, build 1.7 Jun 25, 2010 // Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. /////////////////////////////////////////////////////////////////////////////// // // Processor 'microblaze_0', ID 100, memory map. // /////////////////////////////////////////////////////////////////////////////// ADDRESS_MAP microblaze_0 MICROBLAZE 100 /////////////////////////////////////////////////////////////////////////////// // // Processor 'microblaze_0' address space 'bram_block_0_combined' 0x00000000:0x0000FFFF (64 KBytes). // /////////////////////////////////////////////////////////////////////////////// ADDRESS_SPACE bram_block_0_combined RAMB16 [0x00000000:0x0000FFFF] BUS_BLOCK bram_block_0/bram_block_0/ramb16_0 [31:31] INPUT = bram_block_0_combined_0.mem; bram_block_0/bram_block_0/ramb16_1 [30:30] INPUT = bram_block_0_combined_1.mem; bram_block_0/bram_block_0/ramb16_2 [29:29] INPUT = bram_block_0_combined_2.mem; bram_block_0/bram_block_0/ramb16_3 [28:28] INPUT = bram_block_0_combined_3.mem; bram_block_0/bram_block_0/ramb16_4 [27:27] INPUT = bram_block_0_combined_4.mem; bram_block_0/bram_block_0/ramb16_5 [26:26] INPUT = bram_block_0_combined_5.mem; bram_block_0/bram_block_0/ramb16_6 [25:25] INPUT = bram_block_0_combined_6.mem; bram_block_0/bram_block_0/ramb16_7 [24:24] INPUT = bram_block_0_combined_7.mem; bram_block_0/bram_block_0/ramb16_8 [23:23] INPUT = bram_block_0_combined_8.mem; bram_block_0/bram_block_0/ramb16_9 [22:22] INPUT = bram_block_0_combined_9.mem; bram_block_0/bram_block_0/ramb16_10 [21:21] INPUT = bram_block_0_combined_10.mem; bram_block_0/bram_block_0/ramb16_11 [20:20] INPUT = bram_block_0_combined_11.mem; bram_block_0/bram_block_0/ramb16_12 [19:19] INPUT = bram_block_0_combined_12.mem; bram_block_0/bram_block_0/ramb16_13 [18:18] INPUT = bram_block_0_combined_13.mem; bram_block_0/bram_block_0/ramb16_14 [17:17] INPUT = bram_block_0_combined_14.mem; bram_block_0/bram_block_0/ramb16_15 [16:16] INPUT = bram_block_0_combined_15.mem; bram_block_0/bram_block_0/ramb16_16 [15:15] INPUT = bram_block_0_combined_16.mem; bram_block_0/bram_block_0/ramb16_17 [14:14] INPUT = bram_block_0_combined_17.mem; bram_block_0/bram_block_0/ramb16_18 [13:13] INPUT = bram_block_0_combined_18.mem; bram_block_0/bram_block_0/ramb16_19 [12:12] INPUT = bram_block_0_combined_19.mem; bram_block_0/bram_block_0/ramb16_20 [11:11] INPUT = bram_block_0_combined_20.mem; bram_block_0/bram_block_0/ramb16_21 [10:10] INPUT = bram_block_0_combined_21.mem; bram_block_0/bram_block_0/ramb16_22 [9:9] INPUT = bram_block_0_combined_22.mem; bram_block_0/bram_block_0/ramb16_23 [8:8] INPUT = bram_block_0_combined_23.mem; bram_block_0/bram_block_0/ramb16_24 [7:7] INPUT = bram_block_0_combined_24.mem; bram_block_0/bram_block_0/ramb16_25 [6:6] INPUT = bram_block_0_combined_25.mem; bram_block_0/bram_block_0/ramb16_26 [5:5] INPUT = bram_block_0_combined_26.mem; bram_block_0/bram_block_0/ramb16_27 [4:4] INPUT = bram_block_0_combined_27.mem; bram_block_0/bram_block_0/ramb16_28 [3:3] INPUT = bram_block_0_combined_28.mem; bram_block_0/bram_block_0/ramb16_29 [2:2] INPUT = bram_block_0_combined_29.mem; bram_block_0/bram_block_0/ramb16_30 [1:1] INPUT = bram_block_0_combined_30.mem; bram_block_0/bram_block_0/ramb16_31 [0:0] INPUT = bram_block_0_combined_31.mem; END_BUS_BLOCK; END_ADDRESS_SPACE; END_ADDRESS_MAP; Подскажите пожалуйста, что нужно поправить в этом файле. Спасибо!
  13. Всем спасибо! Всё заработало. Добавляю всё vhd и ngc файлы вручную
  14. Ошибка такая: ERROR:NgdBuild:604 - logical block 't_xps_module_0/t_xps_module_0/XLXI_1' with type 'smth' could not be resolved. A pin name misspelling can cause this, a missing edif or ngc file, case mismatch between the block name and the edif or ngc file name, or the misspelling of a type name. Symbol 'smth' is not supported in target 'spartan6'. Я получается периферийный модуль сначала собираю в ISE, чтобы его отладить, потом делаю экспорт. Если в моём модуле нет corege-овских компонентов, всё собирается нормально, но если есть (в этом случае счётчик), то выходит такая ошибка. При экспорте он добавляет в pao vhd файл корки. Можете отправить содержание вашего pao файла?
  15. Не получается, пока пробую. Делаю всё, как советуют: добавляю ngc файлы, создаю bbd файл, добавляю блок в проект заново. ошибка остаётся прежняя.. что-то где-то упускаю видимо
×
×
  • Создать...