xschem/xschem_library/logic/sync_reg.sch

43 lines
1.1 KiB
XML

v {xschem version=2.9.5_RC5 file_version=1.1}
G {
process(CK, RESET) begin
if RESET = '1' then
D <= (others => '0');
elsif CK'event and CK = '1' and LOAD = '1' then
D <= DATA_IN;
end if;
end process;
DATA_OUT <= D after delay;
}
V {reg [width-1:0] D;
always @(posedge CK or posedge RESET) begin
if(RESET) begin
D <= 0;
end
else begin
if(LOAD) begin
D <= DATA_IN;
end
end
end
assign #del DATA_OUT=D;
}
S {}
E {}
C {opin.sym} 440 -230 0 0 {name=p3 lab=DATA_OUT[width-1:0] verilog_type=wire}
C {ipin.sym} 280 -210 0 0 {name=p2 lab=CK}
C {ipin.sym} 280 -190 0 0 {name=p4 lab=RESET}
C {ipin.sym} 280 -250 0 0 {name=p7 lab=DATA_IN[width-1:0]}
C {ipin.sym} 280 -230 0 0 {name=p1 lab=LOAD}
C {verilog_timescale.sym} 360 -577.5 0 0 {name=s1 timestep="1ps" precision="1ps" }
C {title.sym} 160 -30 0 0 {name=l2}
C {arch_declarations.sym} 360 -350 0 0 { signal d : std_logic_vector(width-1 downto 0);
}
C {use.sym} 360 -460 0 0 {------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;}