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

 
 
> Scrambler, MIL-STD-188-220C
snayperAlfa
сообщение Mar 18 2011, 15:35
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 130
Регистрация: 3-12-08
Из: Солнечная Одесса
Пользователь №: 42 183



Здравствуйте. Хочу вот реализовать скремблер. Есть документ, описывающий его работу. Но мутный немного. особенно в планек счетчика. Я создал модель на VHDL, но выходная последовательность отличается от той что задана в документации. Подскажите где может быть баг пожалуйста.





Код
library IEEE;
use IEEE.std_logic_1164.all;


entity Scrambler_1 is
port (
    CLK: in std_logic;
    data_in: in std_logic;
    data_out: out std_logic;
    CLK_out:out std_logic
);
end entity;

architecture Scrambler_1 of Scrambler_1 is

signal STATE:integer:=0;

begin
    
    process(CLK)
        variable reg:std_logic_vector(19 downto 0):=(others =>'1');    
        variable a:std_logic;
        variable b:std_logic;
        variable c:std_logic;
        variable d:std_logic;
        variable e:std_logic;
        
        variable counter:integer;
    
    begin  
            
        if(CLK'event and CLK='1' ) then
            
            CASE STATE is
                
                when 0=>
                    CLK_out<='0';
                    
                    --Initial values;
                    reg(19 downto 0):=(others =>'1');
                    counter:=31;
                    
                    a:=reg(0) xor reg(8);
                    b:=reg(2) xnor reg(19);
                    
                    c:='0';
                    
                    d:=b xnor c;
                    e:=data_in xnor d;
                    data_out<=e;
                    
                    STATE<=1;
                
                when 1=>
                    e:=data_in xnor d;
                
                    CLK_out<='0';
                    --sdvig registra
                    reg(19 downto 1):=reg(18 downto 0);
                    reg(0):=e;
                    
                    a:=reg(0) xor reg(8);
                    b:=reg(2) xnor reg(19);    
                    
                    counter:=counter+1;
                    
                    if(a='1') then
                        counter:=31;
                    end if;
                    
                    if(counter=32) then
                        counter:=0;
                    end if;
                    
                    if(counter=30) then
                        c:='1';
                    else
                        c:='0';
                    end if;
                    
                    
                    
                    d:=b xnor c;
                    e:=data_in xnor d;
                    data_out<=e;
                    
                    STATE<=2;
                
                when 2=>
                    
                    CLK_out<='1';
                    STATE<=1;
                
                    
                when others => null;
                
            end case;

        end if;
    
    end process;
        
end architecture;



У меня получается последовательность: 0xFF,0xFF,0xFF,0xFD,0xB6,0xDB


--------------------
Жили бы в пещерах и не знали бы горя.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SFx
сообщение Mar 20 2011, 00:24
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 758
Регистрация: 11-07-05
Из: Понаехал (Мск)
Пользователь №: 6 688



вроде похоже.

только часть функции с пункта 1 до 12 должны происходит в момент возрастания фронта clk.

пункт 1 и 10 дублируются.


VHDL язык описания, а не алгоритмический. здесь сразу все действия (в алгоритмическом языке их принято называть присваиванием) происходят мгновенно (логика) или по фронту (спаду) тактового сигнала (регистр/триггер)

у Вас сложность наверное в том, что не можете понять, где в алгоритме операции которые нужно реализовать в логике, а которые в триггерах.
Go to the top of the page
 
+Quote Post



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

 


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


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