MAXHAX 0 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба Всем день добрый. Необходима некоторая помощь с регистром, т.к. я уже не могу найти где моя ошибка. 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Burenkov 0 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба У вас timing simulation, сделайте behavioral С кодом все ок, должно работать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба 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 присутствуют одновременно. Так должно быть? И что при этом происходит? Кто имеет более высокий приоритет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tausinov 0 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба На первый взгляд, никакого криминала в коде нет. Единственное, что смущает - запятая после последнего сигнала в списке чувствительности. Было бы удобнее, если бы вы добавили еще и тестбенч, чтобы была возможность самому "пощупать". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXHAX 0 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба У Вас на картинке load и shift присутствуют одновременно. Так должно быть? И что при этом происходит? Кто имеет более высокий приоритет? Shift - это тот же enable, просто разрешающий сигнал Load - использую как сигнал загрузки У вас timing simulation, сделайте behavioral С кодом все ок, должно работать В квартусовском симуляторе могу выбрать только timing и functional Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Burenkov 0 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба В квартусовском симуляторе могу выбрать только timing и functional functional значит выбирайте Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба Shift - это тот же enable, просто разрешающий сигнал Load - использую как сигнал загрузки Ответ не принимается! Так все таки, когда два эти сигнала действуют одновременно, что происходит? Сдвиг или загрузка? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXHAX 0 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба functional значит выбирайте теперь здесь идет не по clk, а по load идет, на скрине видно что по первому и 3-ему time bar они идут неверно Ответ не принимается! Так все таки, когда два эти сигнала действуют одновременно, что происходит? Сдвиг или загрузка? Насколько я понимаю, чтобы ачать разрешать сдвигать, сперва должна произойти загрузка, значит load в большем приоритете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tausinov 0 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба теперь здесь идет не по clk, а по load идет, на скрине видно что по первому и 3-ему time bar они идут неверно Почему неверно? Сейчас все четко. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Burenkov 0 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба теперь здесь идет не по 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') ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXHAX 0 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба Почему неверно? Сейчас все четко. мне надо, чтобы перед 3-им time bar было пол такта в нуле load у вас асинхронный, так и будет. Хотите чтоб он был синхронный, перенесите его внутрь if (clk'event and clk = '1') что-то я вообще не могу придумать как это сделать, вообще под конец дня голова не варит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Burenkov 0 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба мне надо, чтобы перед 3-им time bar было пол такта в нуле что-то я вообще не могу придумать как это сделать, вообще под конец дня голова не варит У вас данные при загрузке 0x81, младший бит в 1. Сделайте его в 0 и тогда будет пол такта в 0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXHAX 0 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба У вас данные при загрузке 0x81, младший бит в 1. Сделайте его в 0 и тогда будет пол такта в 0 ок, а как сделать синхронный load Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба ок, а как сделать синхронный load А что такое "список чувствительности" у процесса? Что означает вот эта строка: process (clk,load,D,) ? Когда и по какому сигналу запускается процесс? Что такое "синхронное проектирование"? Много вопросов, да? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXHAX 0 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба А что такое "список чувствительности" у процесса? Что означает вот эта строка: process (clk,load,D,) ? Когда и по какому сигналу запускается процесс? Что такое "синхронное проектирование"? Много вопросов, да? :) от всех вопросов голова сейчас взорвется)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться