ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
745645 Топик полностью
Dingo (29.03.2017 11:22 - 11:41, просмотров: 286) ответил Николай Коровин на Неееее, в схемотехнической реализации вся фишка именно в том, что это лэтчи! Т. е. они не по фронту работают, они то один «прямоточная труба», то второй. А защёлкивание по фронту возникает именно
Тогда так. Ниже и под отредактированный вариант. В языке ещё есть несинтезируемая часть, например задать задержки (задать, что инверсный сигнал запаздывает от опорного) через transport и after, но я это шаманство пока не освоил. Естественно, ругается на латчи Warning (10631): VHDL Process Statement warning at NK_test.vhd(22): inferring latch(es) for signal or variable "r_oS1", which holds its previous value in one or more paths through the process
ARCHITECTURE RTL OF NK_test IS
	signal r_S4 : std_logic;
	signal r_oS1 :std_logic;
	signal w_X1 : std_logic;
	signal w_X2 : std_logic;
BEGIN
	w_X1 <= not inS2 or inS3;
	w_X2 <= inS2 or inS3;
	
	process(w_X1, inS1)
	begin
		if (w_X1 = '1') then
			r_oS1 <= inS1;
		end if;
	end process;
	
	process(w_X2, r_oS1)
	begin
		if (w_X2 = '1') then
			r_S4 <= r_oS1;
	end if;
	end process;

	outS4 <= r_S4;
END RTL;
Второй, "классика".
library ieee;
use ieee.std_logic_1164.all;

ENTITY NK2_test IS
PORT(
	i_D : in std_logic;
	i_clk : in std_logic;
	o_Q : out std_logic
);
END ENTITY;

ARCHITECTURE RTL OF NK2_test IS
	signal r_Q1 : std_logic;
	signal r_Q2 : std_logic;
	signal w_nCK : std_logic;
BEGIN
	w_nCK <= not i_clk;
	
	process(w_nCK, i_D)
	begin
		if (w_nCK = '1') then
			r_Q1 <= i_D;
		end if;
	end process;
	
	process(i_clk, r_Q1)
	begin
		if (i_clk = '1') then
			r_Q2 <= r_Q1;
	end if;
	end process;

	o_Q <= r_Q2;
	
END RTL; 
imageimageimage