10ビットシフトレジスタを作成しようとしています。しかし、私はエラーを取得し続けるVHDL 10ビットシフトレジスタ
[DRC 23-20]規則違反(NSTD-1)未指定のI/O規格 - 2 15のうち、論理ポートはI/O規格(IOSTANDARD)値 'DEFAULT' を使用し、ユーザーに特定の値が割り当てられているのではありません。これは、I/O競合や、ボードの電源や接続性に影響を与え、性能、信号の完全性に影響を与えたり、極端な場合にはデバイスまたはデバイスが接続されているコンポーネントに損傷を与える可能性があります。この違反を修正するには、すべてのI/O規格を指定します。すべての論理ポートにユーザが指定したI/O規格値が定義されていない限り、このデザインはビットストリームの生成に失敗します。指定されていないI/O標準値(推奨されません)でビットストリームを作成できるようにするには、set_property SEVERITY {Warning} [get_drc_checks NSTD-1]コマンドを使用します。注記:Vivado Runsインフラストラクチャ(例:launch_runs Tclコマンド)を使用する場合は、このコマンドを.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;
このエラーはシフトレジスタとは何の関係もなく、設計上の制約と関係しています。ザイリンクスの回答[here](https://www.xilinx.com/support/answers/56354.html) – gsm
制約ファイルを追加できますか? – JHBonarius