Перейти к содержанию

Всем день добрый. Необходима некоторая помощь с регистром, т.к. я уже не могу найти где моя ошибка.
CODE
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity shift is
Port ( clk : in STD_LOGIC;
reset: in STD_LOGIC;
load : in STD_LOGIC;
shift: in STD_LOGIC;
D : in STD_LOGIC_VECTOR (7 downto 0);
Q : out STD_LOGIC);
end shift;

architecture Behavioral of shift is

signal sr: std_logic_vector(7 downto 0) := (others=>'0');

begin

process (clk,load,D,)
begin
if (load = '1') then
sr <= D;
elsif (clk'event and clk = '1') then
if (shift = '1') then
sr <= sr(0) & sr(7 downto 1);
end if;
end if;
end process;

Q <= sr(0);

end Behavioral;

В общем проблема состоит в том, что на выходе выводит неверный сигнал. На скрине я выделил лишнее, т.е. он заканчивает этот сигнал по спаду, хотя должен по фронту по сути идти



Да и второй сигнал тоже смещен на 1 такт по clk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
У вас timing simulation, сделайте behavioral
С кодом все ок, должно работать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(MAXHAX @ Apr 12 2018, 15:16) <{POST_SNAPBACK}>
begin

process (clk,load,D,)
begin
if (load = '1') then
sr <= D;
elsif (clk'event and clk = '1') then
if (shift = '1') then
sr <= sr(0) & sr(7 downto 1);
end if;
end if;
end process;

Q <= sr(0);


Да и второй сигнал тоже смещен на 1 такт по clk

У Вас на картинке load и shift присутствуют одновременно. Так должно быть? И что при этом происходит? Кто имеет более высокий приоритет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
На первый взгляд, никакого криминала в коде нет. Единственное, что смущает - запятая после последнего сигнала в списке чувствительности.
Было бы удобнее, если бы вы добавили еще и тестбенч, чтобы была возможность самому "пощупать".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(iosifk @ Apr 12 2018, 15:48) <{POST_SNAPBACK}>
У Вас на картинке load и shift присутствуют одновременно. Так должно быть? И что при этом происходит? Кто имеет более высокий приоритет?

Shift - это тот же enable, просто разрешающий сигнал
Load - использую как сигнал загрузки

Цитата(Burenkov Sergey @ Apr 12 2018, 15:47) <{POST_SNAPBACK}>
У вас timing simulation, сделайте behavioral
С кодом все ок, должно работать

В квартусовском симуляторе могу выбрать только timing и functional

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(MAXHAX @ Apr 12 2018, 15:59) <{POST_SNAPBACK}>
В квартусовском симуляторе могу выбрать только timing и functional

functional значит выбирайте

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(MAXHAX @ Apr 12 2018, 15:59) <{POST_SNAPBACK}>
Shift - это тот же enable, просто разрешающий сигнал
Load - использую как сигнал загрузки

Ответ не принимается!
Так все таки, когда два эти сигнала действуют одновременно, что происходит? Сдвиг или загрузка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Burenkov Sergey @ Apr 12 2018, 16:03) <{POST_SNAPBACK}>
functional значит выбирайте

теперь здесь идет не по clk, а по load идет, на скрине видно что по первому и 3-ему time bar они идут неверно



Цитата(iosifk @ Apr 12 2018, 16:11) <{POST_SNAPBACK}>
Ответ не принимается!
Так все таки, когда два эти сигнала действуют одновременно, что происходит? Сдвиг или загрузка?

Насколько я понимаю, чтобы ачать разрешать сдвигать, сперва должна произойти загрузка, значит load в большем приоритете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(MAXHAX @ Apr 12 2018, 16:20) <{POST_SNAPBACK}>
теперь здесь идет не по clk, а по load идет, на скрине видно что по первому и 3-ему time bar они идут неверно


Почему неверно? Сейчас все четко.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(MAXHAX @ Apr 12 2018, 16:20) <{POST_SNAPBACK}>
теперь здесь идет не по clk, а по load идет, на скрине видно что по первому и 3-ему time bar они идут неверно

load у вас асинхронный, так и будет. Хотите чтоб он был синхронный, перенесите его внутрь if (clk'event and clk = '1')
Все достаточно прозрачно - если load - параллельная загрузка. если не load, то ждем клок. load главнее
if (load = '1') then
...
elsif (clk'event and clk = '1')
...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Tausinov @ Apr 12 2018, 16:24) <{POST_SNAPBACK}>
Почему неверно? Сейчас все четко.

мне надо, чтобы перед 3-им time bar было пол такта в нуле

Цитата(Burenkov Sergey @ Apr 12 2018, 16:24) <{POST_SNAPBACK}>
load у вас асинхронный, так и будет. Хотите чтоб он был синхронный, перенесите его внутрь if (clk'event and clk = '1')

что-то я вообще не могу придумать как это сделать, вообще под конец дня голова не варит

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(MAXHAX @ Apr 12 2018, 16:31) <{POST_SNAPBACK}>
мне надо, чтобы перед 3-им time bar было пол такта в нуле


что-то я вообще не могу придумать как это сделать, вообще под конец дня голова не варит

У вас данные при загрузке 0x81, младший бит в 1. Сделайте его в 0 и тогда будет пол такта в 0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Burenkov Sergey @ Apr 12 2018, 16:33) <{POST_SNAPBACK}>
У вас данные при загрузке 0x81, младший бит в 1. Сделайте его в 0 и тогда будет пол такта в 0

ок, а как сделать синхронный load

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(MAXHAX @ Apr 12 2018, 16:58) <{POST_SNAPBACK}>
ок, а как сделать синхронный load

А что такое "список чувствительности" у процесса?
Что означает вот эта строка: process (clk,load,D,) ? Когда и по какому сигналу запускается процесс?
Что такое "синхронное проектирование"?

Много вопросов, да? sm.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(iosifk @ Apr 12 2018, 17:01) <{POST_SNAPBACK}>
А что такое "список чувствительности" у процесса?
Что означает вот эта строка: process (clk,load,D,) ? Когда и по какому сигналу запускается процесс?
Что такое "синхронное проектирование"?

Много вопросов, да? sm.gif

от всех вопросов голова сейчас взорвется))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти