Показать сообщение отдельно
Старый 22.12.2012, 17:09   #1 (permalink)
Abraziv
Member
 
Регистрация: 28.07.2011
Сообщений: 275
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 193
По умолчанию Сдвиговый регистр VHDL

Всем привет.Описываю сдвиговый регистр. Параллельная загрузка по 8 бит за три такта , того 24 ( см рис) . После загрузки входные буфера отключаются ( в 'Z' ) . Происходит сдвиг на 2 такта и выгружается через выходные буфера.Схемой управляет автомат (точно работает). Описал на VHDL , проблема с загрузкой в регистры. Как я понял ошибка в описание сдвигового регистра ( срабатывает по переднему фронту).

entity REGISTR_8_BIT is
port(
D : in STD_LOGIC_VECTOR(0 to 7);
CLK : in STD_LOGIC;
OE : in STD_LOGIC;
Q : out STD_LOGIC_VECTOR(0 to 7);
outQ: out STD_LOGIC_VECTOR(0 to 7)
);
end REGISTR_8_BIT;

-- Описание архитектуры 8 битного регистра

architecture Behavioral of REGISTR_8_BIT is

begin
p0rocess(OE,CLK)
variable DD : STD_LOGIC_VECTOR(0 to 7) ;
begin

if( CLK = '1' and OE = '0') then
DD := D;
end if;

if( OE = '1') then
Q <= (others => 'Z');
else
Q <= DD;
end if;

outQ <= DD;

end process;

end Behavioral;



ниже карта портов для этого регистра:
REG1 : REGISTR_8_BIT
port map( D(0) => lineREG1(0),D(1) => lineREG1(1), D(2) => lineREG1(2), D(3) => lineREG1(3),
D(4) => lineREG1(4),D(5) => lineREG1(5), D(6) => lineREG1(6), D(7) => lineREG1(7),
CLK => line_avtomat_control(3), OE => line_avtomat_control(6),
Q(0) => lineREG3(7),Q(1) => lineREG1(0),Q(2) => lineREG1(1),Q(3) => lineREG1(2),
Q(4) => lineREG1(3),Q(5) => lineREG1(4),Q(6) => lineREG1(5),Q(7) => lineREG1(6),outQ => rreg );


проект и тест бенч прикрепил. Помогите люди добрые ))))
Изображения
  
Вложения
Тип файла: txt test.txt (2.9 Кб, 581 просмотров)
Тип файла: txt proj.txt (13.2 Кб, 816 просмотров)
Abraziv вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070