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

 
 
> FIFO на VHDL
Jenya7
сообщение Aug 1 2018, 14:36
Сообщение #1


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



В Квартусе есть корка FIFO вполне такая ничего. Но там единица - байт. А как мне сделать FIFO пакетов по 13 байт?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jenya7
сообщение Aug 2 2018, 06:15
Сообщение #2


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



А как вам такое решение?
Я создал двухмерный массив
Код
type packet_t is array (12 downto 0) of std_logic_vector(7 downto 0);
type packet_fifo_t is array (31 downto 0) of packet_t;

signal tx_mailbox_fifo : packet_fifo_t;

shared variable g_fifo_head_idx : integer range 0 to 255 := 0;
shared variable g_fifo_tail_idx : integer range 0 to 255 := 0;
В одном процесе я загружаю байты в очередную ячейку из РАМ
Код
when ST_RAM_TO_TX_BUF_3 =>
    if (idx2 < 13) then
     tx_mailbox_fifo(g_fifo_head_idx)(idx2) <= slave_data_out2;
         idx2 := idx2 + 1;
    else
    --get ready the next fifo slot
    g_fifo_head_idx := g_fifo_head_idx + 1;
    if (g_fifo_head_idx > 31) then
        g_fifo_head_idx := 0;
     end if;
        RamState_b <= ST_RAMB_IDLE;    
   end if;
В другом слежу за индексом
Код
TX_MAILBOX_FIFO_MANAGER: process (REG_CLK)
begin
    if (rising_edge(REG_CLK)) then
    
    --send previous message - g_fifo_head_idx incremeted by 1 in other process
        if (g_fifo_tail_idx < g_fifo_head_idx)    then      
        tx_buf_ready <= '1';        
        end if;
            
    if (update_tail_idx = '1') then
        tx_buf_ready <= '0';
        g_fifo_tail_idx := g_fifo_tail_idx + 1;
        if (g_fifo_tail_idx > 31) then
        g_fifo_tail_idx := 0;
        end if;
    end if;
    
    end if;
end process TX_MAILBOX_FIFO_MANAGER;
И есть процесс посылки
Код
when ST_TX_DATA =>  --send 13 byte of data
    if (tx_byte_idx < 13) then
        MSPI_WR_DATA <= X"00" & tx_mailbox_fifo(g_fifo_tail_idx)(tx_byte_idx);
              
    MSPI_WR_START_TRIG <= '1'; --send a byte
                          
    tx_byte_idx := tx_byte_idx + 1;    
                          
    NextState <= ST_TX_DATA;
    McpState <= ST_WAIT_DONE;
    else
    MSPI_CS <= '1';            --chip select high
      
        update_tail_idx <= '1';

    NextState <= ST_MCP_IDLE;
    McpState <= ST_REQ_TO_SEND0;
    end if;

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   FIFO на VHDL   Aug 1 2018, 14:36
- - andk   Эээ.. Что вы имели ввиду под словом "единица...   Aug 1 2018, 16:03
|- - Jenya7   Цитата(andk @ Aug 1 2018, 22:03) Эээ.. Чт...   Aug 2 2018, 05:13
- - Flip-fl0p   Вместо того чтобы выбирать значения из списка можн...   Aug 2 2018, 05:20
|- - Jenya7   Цитата(Flip-fl0p @ Aug 2 2018, 11:20...   Aug 2 2018, 05:22
|- - Flip-fl0p   Цитата(Jenya7 @ Aug 2 2018, 08:22) а как ...   Aug 2 2018, 05:30
||- - Jenya7   Цитата(Flip-fl0p @ Aug 2 2018, 11:30...   Aug 2 2018, 05:34
|- - quato_a   Цитата(Jenya7 @ Aug 2 2018, 08:22) а как ...   Aug 2 2018, 05:40
|- - Jenya7   Цитата(quato_a @ Aug 2 2018, 11:40) Напиш...   Aug 2 2018, 05:56
|- - quato_a   Цитата(Jenya7 @ Aug 2 2018, 08:56) у меня...   Aug 2 2018, 06:02
|- - RobFPGA   Приветствую! Цитата(Jenya7 @ Aug 2 2018,...   Aug 2 2018, 06:15
- - andk   И всё таки, что вы хотите сделать? Есть какая-то R...   Aug 2 2018, 20:30
|- - andrew_b   Цитата(andk @ Aug 2 2018, 23:30) Ну а сде...   Aug 3 2018, 04:58
|- - Jenya7   Цитата(andk @ Aug 3 2018, 01:30) И всё та...   Aug 3 2018, 06:28
|- - Flip-fl0p   Цитата(Jenya7 @ Aug 3 2018, 09:28) я приш...   Aug 3 2018, 06:39
|- - Jenya7   Цитата(Flip-fl0p @ Aug 3 2018, 11:39...   Aug 3 2018, 10:47
|- - Flip-fl0p   Цитата(Jenya7 @ Aug 3 2018, 13:47) это я ...   Aug 4 2018, 08:14
|- - Jenya7   Цитата(Flip-fl0p @ Aug 4 2018, 14:14...   Aug 5 2018, 04:45
|- - Flip-fl0p   Цитата(Jenya7 @ Aug 5 2018, 07:45) спасиб...   Aug 5 2018, 10:06
|- - RobFPGA   Приветствую! Цитата(Jenya7 @ Aug 5 2018, ...   Aug 5 2018, 12:07
- - Jenya7   сделал ФИФОКодcomponent fifo IS port ( c...   Aug 5 2018, 13:46
- - Flip-fl0p   Ничего не понял, что Вы хотите сделать !   Aug 5 2018, 14:21
|- - Jenya7   Цитата(Flip-fl0p @ Aug 5 2018, 20:21...   Aug 5 2018, 14:23
|- - Flip-fl0p   Цитата(Jenya7 @ Aug 5 2018, 17:23) записа...   Aug 5 2018, 14:28
- - Jenya7   кхм...даже стесняюсь спросить...а кто то вообще ра...   Aug 6 2018, 05:57
- - Flip-fl0p   Цитата(Jenya7 @ Aug 6 2018, 08:57) кхм......   Aug 6 2018, 06:12
- - quato_a   Цитата(Jenya7 @ Aug 6 2018, 08:57) кхм......   Aug 6 2018, 07:01
- - RobFPGA   Приветствую! Цитата(Jenya7 @ Aug 6 2018, ...   Aug 6 2018, 07:36
- - Tpeck   Цитата(RobFPGA @ Aug 6 2018, 10:36) Приве...   Aug 7 2018, 07:42


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

 


RSS Текстовая версия Сейчас: 24th August 2025 - 03:57
Рейтинг@Mail.ru


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