Jump to content

    

FIFO на VHDL

8 минут назад, jenya7 сказал:

я понял. а почему кор генерирует 6 бит?

Так поняли или нет?

Share this post


Link to post
Share on other sites
1 hour ago, andrew_b said:

Так поняли или нет?

почему 6 бит не понял.

Edited by jenya7

Share this post


Link to post
Share on other sites
1 minute ago, jenya7 said:

почему 6 бит не понял.

full это старший бит счётчика количества слов в фифо, он выдаётся отдельно. 

Share this post


Link to post
Share on other sites
 
1 hour ago, des00 said:

full это старший бит счётчика количества слов в фифо, он выдаётся отдельно. 

но количество сообщений в ФИФО я читаю из usedw.  а если usedw  : out std_logic_vector (5 DOWNTO 0)  он мне не выдаст 64. почему (5 DOWNTO 0) ?

 

то есть мне надо изменить алгоритм чтения ФИФО?

вместо

if (size == 0)
	{
		if (status_rx_fifo & RX_FIFO_FULL_MASK)
		{
			//dummy read to resolve fifo_full = 1 issue
			SPI_can_rd(rd_opcode, 0, g_buff_in, 14);
		}

		return 0;
	}
	else
	{
		while (size > 0)
		{
			mailbox_save_to_struct(mcp_num, 0);
			size--;
		}
	}

сделать

 

if (size == 0)
	{
		if (status_rx_fifo & RX_FIFO_FULL_MASK)
		{
			//dummy read to resolve fifo_full = 1 issue
			SPI_can_rd(rd_opcode, 0, g_buff_in, 14);
		}

		return 0;
	}
	else
	{
        //to fix usedw 6 bit
        if (status_rx_fifo & RX_FIFO_FULL_MASK)
           size = 64;

		while (size > 0)
		{
			mailbox_save_to_struct(num, 0);
			size--;
		}
	}
Edited by jenya7

Share this post


Link to post
Share on other sites

Вам надо перестать кодить в слепую, взять ручку, тетрадь, книгу по компьютерному представлению чисел и расписать что происходит с фифо и его сигналами, на ваших разрядностях и в вашем случае. 

В итоге выведете формулу, как, в вашем случае, перейти от сигналов фифо, сгенерированной корки, к настоящему количеству слов в фифо 

 

Share this post


Link to post
Share on other sites
1 hour ago, des00 said:

Вам надо перестать кодить в слепую, взять ручку, тетрадь, книгу по компьютерному представлению чисел и расписать что происходит с фифо и его сигналами, на ваших разрядностях и в вашем случае. 

В итоге выведете формулу, как, в вашем случае, перейти от сигналов фифо, сгенерированной корки, к настоящему количеству слов в фифо 

 

можно конечно и так

rx_fifo_size <= rx_fifo_full & rx_fifo_usedw;

я бы даже сказал - нужно так :), раз корка выделила MSB бит в качестае флага full.

Edited by jenya7

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now