Цитата(Unfog @ Aug 17 2015, 18:25)

Для простоты, имхо, лучше начать с FIFO.
Кодирование передачи таким образом, чтобы она всегда заканчивалась на определенный символ, который при этом отсутствует в теле посылки. Очень упрощает прием. Если нужно могу подробно описать.
Спасибо. В целом понятно. В продолжение темы возник еще вопрос по Avalon записи, которая должна быть после приема пакета с генерацией прерывания по концу пакета. Далее формируется импульс во внешнем устройстве типа так:
Код
// формирование пуска транзакций
IOWR_32DIRECT(FIRENISEY_0_BASE, 0, 1);
Delay(0x000f);
IOWR_32DIRECT(FIRENISEY_0_BASE, 0, 0);
Delay(0x000f);
Диаграмма выглядит так:
Процес записи делаю так:
Код
.....
-- формирование запуска одной транзакции
process(clk)
begin
if (falling_edge(clk)) then
if(avs_s0_address = "00" and avs_s0_write_n = '0') then
if(avs_s0_writedata = "00000000000000000000000000000001") then
s_aso_out0_ready <= '1';
elsif (avs_s0_writedata = "00000000000000000000000000000000") then
s_aso_out0_ready <= '0';
....
Суть непонятки: Все должно выполниться по отрицательному фронту clk. Что имеется ввиду под clk? Это системный клок? Дело в том, что я использую в качестве clk частоту которая присутствует в моем внешнем устройстве. Эта частота ниже в 5 раз системной (100 mHz) частоты и не связана с системной частотой, поскольку идет с другого выхода PLL.
Запись работает. Вопрос в том насколько надежна будет такая система записи данных во внешнее устройство с шины Avalon?