Я пытаюсь создать 10-битный регистр сдвига. Однако я продолжаю получать ошибку
[DRC 23-20] Нарушение правила (NSTD-1) Неопределенный стандарт ввода-вывода — 2 из 15 логических портов используют значение стандарта ввода-вывода (IOSTANDARD) «ПО УМОЛЧАНИЮ» вместо определенного пользователем значения. Это может привести к конфликту ввода-вывода или несовместимости с питанием или подключением платы, что повлияет на производительность, целостность сигнала или, в крайних случаях, приведет к повреждению устройства или компонентов, к которым оно подключено. Чтобы исправить это нарушение, укажите все стандарты ввода/вывода. Эта схема не сможет генерировать битовый поток, если для всех логических портов не определено заданное пользователем стандартное значение ввода-вывода. Чтобы разрешить создание потока битов с неуказанными стандартными значениями ввода-вывода (не рекомендуется), используйте эту команду: set_property SEVERITY {Warning} [get_drc_checks NSTD-1]. ПРИМЕЧАНИЕ. При использовании инфраструктуры Vivado Runs (например, Tcl-команды launch_runs) добавьте эту команду в файл .tcl и добавьте этот файл в качестве предварительного перехватчика для шага write_bitstream для запуска реализации. Проблемные порты: Clk, btnu.
каждый раз, когда я должен написать поток битов. Может ли кто-нибудь помочь указать мне правильное направление и указать на любые другие ошибки, которые я делаю, которые не позволят моему регистру сдвига работать должным образом.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity question2 is
Port (
led: out std_logic_vector (9 downto 0);
Clk: in std_logic;
btnu: in std_logic;
btnL: in std_logic;
btnR: in std_logic ;
btnD: in std_logic;
btnC: in std_logic
);
end question2;
architecture Behavioral of question2 is
constant active: std_logic :='1';
constant inactive: std_logic :='0';
constant step_zero: std_logic_vector(9 downto 0) :="0000000000";
constant step_one: std_logic_vector(9 downto 0) :="0000000001";
constant step_two: std_logic_vector(9 downto 0) :="0000000010";
constant step_three: std_logic_vector(9 downto 0) :="0000000100";
constant step_four: std_logic_vector(9 downto 0) :="0000001000";
constant step_five: std_logic_vector(9 downto 0) :="0000010000";
constant step_six: std_logic_vector(9 downto 0) :="0000100000";
constant step_seven: std_logic_vector(9 downto 0) :="0001000000";
constant step_eight: std_logic_vector(9 downto 0) :="0010000000";
constant step_nine: std_logic_vector(9 downto 0) :="0100000000";
constant step_ten: std_logic_vector(9 downto 0) :="0100000000";
signal DataIn: std_logic_vector (9 downto 0):= "0000000001";
signal Load: std_logic := btnD;
signal Reset: std_logic;
signal Left: std_logic:= btnL;
signal Right: std_logic:= btnR;
signal DataOut: std_logic_vector (9 downto 0);
signal Clear: std_logic:= btnU;
signal speed_enable: std_logic;
begin
SpeedControl: process (clk)
variable counter: integer range 0 to 10000000;
begin
speed_enable<=not active;
if Reset = Active then
counter:= 0;
elsif (rising_edge (clk)) then
counter := counter + 1;
if (counter=10000000) then
speed_enable<= Active;
counter:=0;
end if;
end if;
end process;
shiftregister: process(speed_enable, clear, DataIn)
begin
if speed_enable=active then
if clear=active then
DataOut (9 downto 0) <= "0000000000"; --(others=>'0');
elsif load = Active then
DataOut (9 downto 0) <= DataIn ;
elsif Left = Active then
DataOut (9 downto 0) <= DataOut(7 downto 0) & "11" ;
elsif Right = Active then
DataOut (9 downto 0) <= DataOut (9 downto 2) & "11" ;
end if;
end if;
end process;
LEDSTEP: process(DataOut)
begin
if DataOut = "0000000000" then
led <= step_zero;
elsif DataOut = "0000000001" then
led <= step_one;
elsif DataOut = "0000000010" then
led <= step_two;
elsif DataOut = "0000000100" then
led <= step_three;
elsif DataOut = "000001000" then
led <= step_four;
elsif DataOut = "0000010000" then
led <= step_five;
elsif DataOut = "0000100000" then
led <= step_six;
elsif DataOut = "0001000000" then
led <= step_seven;
elsif DataOut = "0010000000" then
led <= step_eight;
elsif DataOut = "0100000000" then
led <= step_nine;
elsif DataOut = "1000000000" then
led <= step_ten;
end if;
end process;
end Behavioral;