В процессе выполнения работы возникла серьезная проблема. Мне нужно запрограммировать ПЛИС так, чтобы она преобразовывала данные, пришедшие по каналу Ethernet в однобитный поток E1. Скорость передачи данных по Ethernet больше, чем по E1, поэтому использую следующую схему: компьютер посылает на ПЛИС N-ое количество пакетов, ПЛИС загоняет их в буфер и начинает передавать по каналу E1. Как только буфер освобождается до определенного уровня, ПЛИС посылает компьютеру запрос, мол я освобождаюсь, давай еще данные, и компьютер шлет еще. Важно чтобы буфер при этом не освобождался и не переполнялся, потому что данные в потоке Е1 должны идти непрерывно и последовательно. Так вот, проблема в том что буфер, скотина этакая, несмотря на размер в 100 Кб все же как-то умудряется освобождаться!!! То есть посылка данных на какое-то время прерывается и за это время буфер успевает освободиться. Парюсь с этим говном уже месяц. Люди если есть какие мысли, подскажите пожалуйста, с чем это может быть связано и как с этим бороться? Конфигурация следующая: ПЛИС Xilinx XC4VLX20, скорость Ethernet около 10 Мбайт/с, скорость Е1 2 Мбайта/с, данные передаются по UDP, ОС на компе Windows XP, программа для передачи данных написана на C#, комп имеет на борту Core2Duo E8400 3ГГц, 4 Гига DDR2-800 и жесткий диск гигов на 200. Буфер представляет собой FIFO, сгенерированное при помощи Xilinx Core Generator.
|