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

 
 
> Покритикуйте проект
D-Luxe
сообщение Jan 24 2011, 14:59
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642



Подскажите как можно покрасивее написать. Какие косяки?

Код
                                
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;


entity ip_header is
  generic
  (
   C_IP_ADDR_DST                      : std_logic_vector        := X"ac1e69bf"
  );
  port
  (
  RFF_WR_CLK_IN                     : in std_logic;
  RFF_DATA_IN                       : in std_logic_vector(0 to 31);
  RFF_WR_REQ_IN                     : in std_logic;

  RFF_DATA_OUT                       : out std_logic_vector(0 to 31);
  RFF_WR_REQ_OUT                     : out std_logic
--  RFF_FULL_OUT                     : out std_logic
  );
end entity ip_header;

architecture IMP of ip_header is
  signal remove34_cnt : std_logic_vector(0 to 34) := "000" & X"00000000";
  
  signal ip_addr_dst : std_logic_vector(0 to 31) := X"00000000";
  
  signal ip_src_wrong : std_logic := '0';
  
  signal write_cnt : std_logic_vector(0 to 1) := "00";
  
begin


  RFF_DATA_OUT <= X"000008" & RFF_DATA_IN(24 to 31) when ( write_cnt(0) and RFF_WR_REQ_IN ) = '1' else
          X"000000" & RFF_DATA_IN(24 to 31) when ( write_cnt(1) and RFF_WR_REQ_IN ) = '1' else
          X"00000000";
  
  RFF_WR_REQ_OUT <= ( write_cnt(0) or write_cnt(1) ) and RFF_WR_REQ_IN;

  process( RFF_WR_CLK_IN )
  begin
    if ( RFF_WR_CLK_IN='1' and RFF_WR_CLK_IN'event ) then
      if ( RFF_DATA_IN(20)='1' and RFF_WR_REQ_IN='1' ) then
        remove34_cnt <= "100" & X"00000000";
      elsif ( RFF_DATA_IN(20)/='1' and RFF_WR_REQ_IN='1' ) then
        remove34_cnt <= '0' & remove34_cnt(0 to 33);
      end if;
      
      if ( remove34_cnt(25)='1' or remove34_cnt(26)='1' or remove34_cnt(27)='1' or remove34_cnt(28)='1' ) then
        ip_addr_dst <= ip_addr_dst(8 to 31) & ip_addr_dst(0 to 7);
      elsif ( ( remove34_cnt(25) or remove34_cnt(26) or remove34_cnt(27) or remove34_cnt(28) ) = '1' and ( ip_addr_dst(0 to 7) /= RFF_DATA_IN(24 to 31) ) ) then
        ip_src_wrong <= '1';
      elsif ( remove34_cnt(24)='1' ) then
        ip_addr_dst <= C_IP_ADDR_DST;
        ip_src_wrong <= '0';
      end if;

     if ( ip_src_wrong='0' and remove34_cnt(32)='1' ) then
          write_cnt <= "10";
     elsif ( ip_src_wrong='0' and remove34_cnt(33)='1' ) then
          write_cnt <= "01";
     elsif ( RFF_DATA_IN(20)='1' ) then
          write_cnt <= "00";
     else
          write_cnt <= "00";
      end if;
      
    end if;
  end process;

end IMP;


--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти.
(с) Уилл Роджерс
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DW0
сообщение Feb 3 2011, 19:34
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 9-08-10
Из: Украина
Пользователь №: 58 828



Код
    if ( RFF_WR_CLK_IN='1' and RFF_WR_CLK_IN'event ) then
      ..................................
      ..................................
    end if;


латчей не будет т.к. все действия внутри условия
Код
if ( RFF_WR_CLK_IN='1' and RFF_WR_CLK_IN'event ) then
Go to the top of the page
 
+Quote Post
D-Luxe
сообщение Feb 4 2011, 10:20
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642



Цитата(DW0 @ Feb 3 2011, 22:34) *
Код
    if ( RFF_WR_CLK_IN='1' and RFF_WR_CLK_IN'event ) then
      ..................................
      ..................................
    end if;


латчей не будет т.к. все действия внутри условия
Код
if ( RFF_WR_CLK_IN='1' and RFF_WR_CLK_IN'event ) then


Не вижу логики в этой фразе. Ставятся ли защелки зависит от вложенных if'ов в этот if (if ( RFF_WR_CLK_IN='1' and RFF_WR_CLK_IN'event ) then).

Цитата(DiWhite @ Feb 3 2011, 22:41) *
А что вообще за проект?

Фильтрует езернет пакеты по айпи адресу.


--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти.
(с) Уилл Роджерс
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:19
Рейтинг@Mail.ru


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