Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
out_data : OUT std_logic_vector (9 DOWNTO 0);
interrupt : OUT std_logic
);
END gpr;
ARCHITECTURE Level1 OF gpr IS
shared variable flag: integer:=0;
shared variable quit: integer:=1;
BEGIN
PROCESS(clk)
variable zero: std_logic :='0';
type registr1 is array(0 to 11) of std_logic_vector(3 downto 0);
type registr2 is array(0 to 11) of std_logic_vector(9 downto 0);
variable reg1 : registr1;
variable reg2 : registr2;
BEGIN
reg1(0) := "0000";
reg1(1) := "0001";
reg1(2) := "0010";
reg1(3) := "0011";
reg1(4) := "0100";
reg1(5) := "0101";
reg1(6) := "0110";
reg1(7) := "0111";
reg1(8) := "1000";
reg1(9) := "1001";
reg1(10) := "1010";
reg1(11) := "1011";
quit:=1;
IF (clk'event AND clk = '1' ) THEN
if(we = '1' AND flag=0 AND quit=1) then
case adr(3 downto 0) is
when "0000"=> case reg1(0)(3 downto 0) is
when "0000"=> reg2(0) := in_data;
when "0001"=> reg2(1) := in_data;
when "0010"=> reg2(2) := in_data;
when "0011"=> reg2(3) := in_data;
when "0100"=> reg2(4) := in_data;
when "0101"=> reg2(5) := in_data;
when "0110"=> reg2(6) := in_data;
when "0111"=> reg2(7) := in_data;
when "1000"=> reg2(8) := in_data;
when "1001"=> reg2(9):= in_data;
when "1010"=> reg2(10) := in_data;
when "1011"=> reg2(11) := in_data;
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "0001"=> case reg1(1)(3 downto 0) is
when "0000"=> reg2(0) := in_data;
when "0001"=> reg2(1) := in_data;
when "0010"=> reg2(2) := in_data;
when "0011"=> reg2(3) := in_data;
when "0100"=> reg2(4) := in_data;
when "0101"=> reg2(5) := in_data;
when "0110"=> reg2(6) := in_data;
when "0111"=> reg2(7) := in_data;
when "1000"=> reg2(8) := in_data;
when "1001"=> reg2(9):= in_data;
when "1010"=> reg2(10) := in_data;
when "1011"=> reg2(11) := in_data;
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "0010"=> case reg1(2)(3 downto 0) is
when "0000"=> reg2(0) := in_data;
when "0001"=> reg2(1) := in_data;
when "0010"=> reg2(2) := in_data;
when "0011"=> reg2(3) := in_data;
when "0100"=> reg2(4) := in_data;
when "0101"=> reg2(5) := in_data;
when "0110"=> reg2(6) := in_data;
when "0111"=> reg2(7) := in_data;
when "1000"=> reg2(8) := in_data;
when "1001"=> reg2(9):= in_data;
when "1010"=> reg2(10) := in_data;
when "1011"=> reg2(11) := in_data;
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "0011"=> case reg1(3)(3 downto 0) is
when "0000"=> reg2(0) := in_data;
when "0001"=> reg2(1) := in_data;
when "0010"=> reg2(2) := in_data;
when "0011"=> reg2(3) := in_data;
when "0100"=> reg2(4) := in_data;
when "0101"=> reg2(5) := in_data;
when "0110"=> reg2(6) := in_data;
when "0111"=> reg2(7) := in_data;
when "1000"=> reg2(8) := in_data;
when "1001"=> reg2(9):= in_data;
when "1010"=> reg2(10) := in_data;
when "1011"=> reg2(11) := in_data;
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "0100"=> case reg1(4)(3 downto 0) is
when "0000"=> reg2(0) := in_data;
when "0001"=> reg2(1) := in_data;
when "0010"=> reg2(2) := in_data;
when "0011"=> reg2(3) := in_data;
when "0100"=> reg2(4) := in_data;
when "0101"=> reg2(5) := in_data;
when "0110"=> reg2(6) := in_data;
when "0111"=> reg2(7) := in_data;
when "1000"=> reg2(8) := in_data;
when "1001"=> reg2(9):= in_data;
when "1010"=> reg2(10) := in_data;
when "1011"=> reg2(11) := in_data;
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "0101"=> case reg1(5)(3 downto 0) is
when "0000"=> reg2(0) := in_data;
when "0001"=> reg2(1) := in_data;
when "0010"=> reg2(2) := in_data;
when "0011"=> reg2(3) := in_data;
when "0100"=> reg2(4) := in_data;
when "0101"=> reg2(5) := in_data;
when "0110"=> reg2(6) := in_data;
when "0111"=> reg2(7) := in_data;
when "1000"=> reg2(8) := in_data;
when "1001"=> reg2(9):= in_data;
when "1010"=> reg2(10) := in_data;
when "1011"=> reg2(11) := in_data;
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "0110"=> case reg1(6)(3 downto 0) is
when "0000"=> reg2(0) := in_data;
when "0001"=> reg2(1) := in_data;
when "0010"=> reg2(2) := in_data;
when "0011"=> reg2(3) := in_data;
when "0100"=> reg2(4) := in_data;
when "0101"=> reg2(5) := in_data;
when "0110"=> reg2(6) := in_data;
when "0111"=> reg2(7) := in_data;
when "1000"=> reg2(8) := in_data;
when "1001"=> reg2(9) := in_data;
when "1010"=> reg2(10) := in_data;
when "1011"=> reg2(11) := in_data;
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "0111"=> case reg1(7)(3 downto 0) is
when "0000"=> reg2(0) := in_data;
when "0001"=> reg2(1) := in_data;
when "0010"=> reg2(2) := in_data;
when "0011"=> reg2(3) := in_data;
when "0100"=> reg2(4) := in_data;
when "0101"=> reg2(5) := in_data;
when "0110"=> reg2(6) := in_data;
when "0111"=> reg2(7) := in_data;
when "1000"=> reg2(8) := in_data;
when "1001"=> reg2(9):= in_data;
when "1010"=> reg2(10) := in_data;
when "1011"=> reg2(11) := in_data;
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "1001"=> case reg1(8)(3 downto 0) is
when "0000"=> reg2(0) := in_data;
when "0001"=> reg2(1) := in_data;
when "0010"=> reg2(2) := in_data;
when "0011"=> reg2(3) := in_data;
when "0100"=> reg2(4) := in_data;
when "0101"=> reg2(5) := in_data;
when "0110"=> reg2(6) := in_data;
when "0111"=> reg2(7) := in_data;
when "1000"=> reg2(8) := in_data;
when "1001"=> reg2(9):= in_data;
when "1010"=> reg2(10) := in_data;
when "1011"=> reg2(11) := in_data;
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "1010"=> case reg1(9)(3 downto 0) is
when "0000"=> reg2(0) := in_data;
when "0001"=> reg2(1) := in_data;
when "0010"=> reg2(2) := in_data;
when "0011"=> reg2(3) := in_data;
when "0100"=> reg2(4) := in_data;
when "0101"=> reg2(5) := in_data;
when "0110"=> reg2(6) := in_data;
when "0111"=> reg2(7) := in_data;
when "1000"=> reg2(8) := in_data;
when "1001"=> reg2(9):= in_data;
when "1010"=> reg2(10) := in_data;
when "1011"=> reg2(11) := in_data;
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "1011"=> case reg1(10)(3 downto 0) is
when "0000"=> reg2(0) := in_data;
when "0001"=> reg2(1) := in_data;
when "0010"=> reg2(2) := in_data;
when "0011"=> reg2(3) := in_data;
when "0100"=> reg2(4) := in_data;
when "0101"=> reg2(5) := in_data;
when "0110"=> reg2(6) := in_data;
when "0111"=> reg2(7) := in_data;
when "1000"=> reg2(8) := in_data;
when "1001"=> reg2(9):= in_data;
when "1010"=> reg2(10) := in_data;
when "1011"=> reg2(11) := in_data;
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "1100"=> case reg1(11)(3 downto 0) is
when "0000"=> reg2(0) := in_data;
when "0001"=> reg2(1) := in_data;
when "0010"=> reg2(2) := in_data;
when "0011"=> reg2(3) := in_data;
when "0100"=> reg2(4) := in_data;
when "0101"=> reg2(5) := in_data;
when "0110"=> reg2(6) := in_data;
when "0111"=> reg2(7) := in_data;
when "1000"=> reg2(8) := in_data;
when "1001"=> reg2(9):= in_data;
when "1010"=> reg2(10) := in_data;
when "1011"=> reg2(11) := in_data;
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
quit := 0;
case adr(3 downto 0) is
when "0000"=> case reg1(0)(3 downto 0) is
when "0000"=> out_data <= reg2(0);
when "0001"=> out_data <= reg2(1);
when "0010"=> out_data <= reg2(2);
when "0011"=> out_data <= reg2(3);
when "0100"=> out_data <= reg2(4);
when "0101"=> out_data <= reg2(5);
when "0110"=> out_data <= reg2(6);
when "0111"=> out_data <= reg2(7);
when "1000"=> out_data <= reg2(8);
when "1001"=> out_data <= reg2(9);
when "1010"=> out_data <= reg2(10);
when "1011"=> out_data <= reg2(11);
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "0001"=> case reg1(1)(3 downto 0) is
when "0000"=> out_data <= reg2(0);
when "0001"=> out_data <= reg2(1);
when "0010"=> out_data <= reg2(2);
when "0011"=> out_data <= reg2(3);
when "0100"=> out_data <= reg2(4);
when "0101"=> out_data <= reg2(5);
when "0110"=> out_data <= reg2(6);
when "0111"=> out_data <= reg2(7);
when "1000"=> out_data <= reg2(8);
when "1001"=> out_data <= reg2(9);
when "1010"=> out_data <= reg2(10);
when "1011"=> out_data <= reg2(11);
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "0010"=> case reg1(2)(3 downto 0) is
when "0000"=> out_data <= reg2(0);
when "0001"=> out_data <= reg2(1);
when "0010"=> out_data <= reg2(2);
when "0011"=> out_data <= reg2(3);
when "0100"=> out_data <= reg2(4);
when "0101"=> out_data <= reg2(5);
when "0110"=> out_data <= reg2(6);
when "0111"=> out_data <= reg2(7);
when "1000"=> out_data <= reg2(8);
when "1001"=> out_data <= reg2(9);
when "1010"=> out_data <= reg2(10);
when "1011"=> out_data <= reg2(11);
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "0011"=> case reg1(3)(3 downto 0) is
when "0000"=> out_data <= reg2(0);
when "0001"=> out_data <= reg2(1);
when "0010"=> out_data <= reg2(2);
when "0011"=> out_data <= reg2(3);
when "0100"=> out_data <= reg2(4);
when "0101"=> out_data <= reg2(5);
when "0110"=> out_data <= reg2(6);
when "0111"=> out_data <= reg2(7);
when "1000"=> out_data <= reg2(8);
when "1001"=> out_data <= reg2(9);
when "1010"=> out_data <= reg2(10);
when "1011"=> out_data <= reg2(11);
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "0100"=> case reg1(4)(3 downto 0) is
when "0000"=> out_data <= reg2(0);
when "0001"=> out_data <= reg2(1);
when "0010"=> out_data <= reg2(2);
when "0011"=> out_data <= reg2(3);
when "0100"=> out_data <= reg2(4);
when "0101"=> out_data <= reg2(5);
when "0110"=> out_data <= reg2(6);
when "0111"=> out_data <= reg2(7);
when "1000"=> out_data <= reg2(8);
when "1001"=> out_data <= reg2(9);
when "1010"=> out_data <= reg2(10);
when "1011"=> out_data <= reg2(11);
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "0101"=> case reg1(5)(3 downto 0) is
when "0000"=> out_data <= reg2(0);
when "0001"=> out_data <= reg2(1);
when "0010"=> out_data <= reg2(2);
when "0011"=> out_data <= reg2(3);
when "0100"=> out_data <= reg2(4);
when "0101"=> out_data <= reg2(5);
when "0110"=> out_data <= reg2(6);
when "0111"=> out_data <= reg2(7);
when "1000"=> out_data <= reg2(8);
when "1001"=> out_data <= reg2(9);
when "1010"=> out_data <= reg2(10);
when "1011"=> out_data <= reg2(11);
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "0110"=> case reg1(6)(3 downto 0) is
when "0000"=> out_data <= reg2(0);
when "0001"=> out_data <= reg2(1);
when "0010"=> out_data <= reg2(2);
when "0011"=> out_data <= reg2(3);
when "0100"=> out_data <= reg2(4);
when "0101"=> out_data <= reg2(5);
when "0110"=> out_data <= reg2(6);
when "0111"=> out_data <= reg2(7);
when "1000"=> out_data <= reg2(8);
when "1001"=> out_data <= reg2(9);
when "1010"=> out_data <= reg2(10);
when "1011"=> out_data <= reg2(11);
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "0111"=> case reg1(7)(3 downto 0) is
when "0000"=> out_data <= reg2(0);
when "0001"=> out_data <= reg2(1);
when "0010"=> out_data <= reg2(2);
when "0011"=> out_data <= reg2(3);
when "0100"=> out_data <= reg2(4);
when "0101"=> out_data <= reg2(5);
when "0110"=> out_data <= reg2(6);
when "0111"=> out_data <= reg2(7);
when "1000"=> out_data <= reg2(8);
when "1001"=> out_data <= reg2(9);
when "1010"=> out_data <= reg2(10);
when "1011"=> out_data <= reg2(11);
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "1000"=> case reg1(8)(3 downto 0) is
when "0000"=> out_data <= reg2(0);
when "0001"=> out_data <= reg2(1);
when "0010"=> out_data <= reg2(2);
when "0011"=> out_data <= reg2(3);
when "0100"=> out_data <= reg2(4);
when "0101"=> out_data <= reg2(5);
when "0110"=> out_data <= reg2(6);
when "0111"=> out_data <= reg2(7);
when "1000"=> out_data <= reg2(8);
when "1001"=> out_data <= reg2(9);
when "1010"=> out_data <= reg2(10);
when "1011"=> out_data <= reg2(11);
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "1001"=> case reg1(9)(3 downto 0) is
when "0000"=> out_data <= reg2(0);
when "0001"=> out_data <= reg2(1);
when "0010"=> out_data <= reg2(2);
when "0011"=> out_data <= reg2(3);
when "0100"=> out_data <= reg2(4);
when "0101"=> out_data <= reg2(5);
when "0110"=> out_data <= reg2(6);
when "0111"=> out_data <= reg2(7);
when "1000"=> out_data <= reg2(8);
when "1001"=> out_data <= reg2(9);
when "1010"=> out_data <= reg2(10);
when "1011"=> out_data <= reg2(11);
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "1010"=> case reg1(10)(3 downto 0) is
when "0000"=> out_data <= reg2(0);
when "0001"=> out_data <= reg2(1);
when "0010"=> out_data <= reg2(2);
when "0011"=> out_data <= reg2(3);
when "0100"=> out_data <= reg2(4);
when "0101"=> out_data <= reg2(5);
when "0110"=> out_data <= reg2(6);
when "0111"=> out_data <= reg2(7);
when "1000"=> out_data <= reg2(8);
when "1001"=> out_data <= reg2(9);
when "1010"=> out_data <= reg2(10);
when "1011"=> out_data <= reg2(11);
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when "1011"=> case reg1(11)(3 downto 0) is
when "0000"=> out_data <= reg2(0);
when "0001"=> out_data <= reg2(1);
when "0010"=> out_data <= reg2(2);
when "0011"=> out_data <= reg2(3);
when "0100"=> out_data <= reg2(4);
when "0101"=> out_data <= reg2(5);
when "0110"=> out_data <= reg2(6);
when "0111"=> out_data <= reg2(7);
when "1000"=> out_data <= reg2(8);
when "1001"=> out_data <= reg2(9);
when "1010"=> out_data <= reg2(10);
when "1011"=> out_data <= reg2(11);
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
when others => zero:=NOT zero; interrupt<=zero; zero:=NOT zero; flag:=1;quit:=0;
end case;
quit := 0;
end if;
if(flag=1 AND quit=1) then
quit:=0;
flag:=0;
zero:=NOT zero;
zero:=NOT zero;
interrupt<=zero;
end if;
end if;
END PROCESS;
END Level1;
Работа устройства осуществляется следующим образом: при наличии высокого уровня входного сигналов CLK и WE производится запись информации, поступившей на вход IN_DATA устройства, по адресу на входе ADR. Чтение данных из РОН осуществляется при подаче на вход адресов требуемого регистра, а также высоко уровня сигналов CLK и RE. При адресация в устройстве осуществляется с помощью дополнительного блока регистров, хранящего адреса необходимых регистров с дынными.
КПДП организует прямой доступ к памяти внешним устройствам. Для подсчета текущего адреса и количества переданных слов данное устройство содержит в себе собственный счетчик адреса. В начале цикла КПДП счетчик адреса устанавливается в начальный адрес (по условию 8), и начинает отсчет 8 циклов передачи слова.
Условно-графическое изображение КПДП изображено на рисунке 2.13.

Рисунок 2.12 – Условно-графическое обозначение КПДП.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |


