如何实现信号延时(上升沿同步,但下降沿延迟几个时钟出现)?
如何实现信号延时(上升沿同步,但下降沿延迟几个时钟出现)? 解决方法:PROC_ADJ_VSYNCS: process (CLK_IN,CLK)--可实现信号线延时
variable VAR_VSYNC_CNT: std_logic_vector(3 downto 0):= "0000";
constant CONST_VSYNC_CNT_MAX: std_logic_vector(3 downto 0):= "1100";
begin
if CLK_IN='1' then
CLK_OUT <= '1';
VAR_VSYNC_CNT := "0000";
elsif rising_edge(CLK) then
if (VAR_VSYNC_CNT<CONST_VSYNC_CNT_MAX) then
CLK_OUT <= '1';
VAR_VSYNC_CNT := VAR_VSYNC_CNT + 1;
else
CLK_OUT <= '0';
end if;
end if;
end process PROC_ADJ_VSYNCS; input signal;
reg test_reg;
wire signal_up;
wire signal_down;
always@(posedge clk or negedge rst)
begin
if(!rst)
test_reg <= 3'b000;
else
test_reg <= {test_reg,signal};
end
assign signal_up = ((!test_reg ) && signal) ? 1'b1 : 1'b0;//信号上升沿
assignsignal_down=(test_reg && (!test_reg)) ? 1'b1 : 1'b0;//信号下降沿
*****一般都是这么处理的,可以看看------------------------------------------------
-----------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------- input signal;
reg test_reg;
wire signal_up;
wire signal_down;
always@(posedge clk or negedge rst)
begin
if(!rst)
test_reg <= 3'b000;
else
test_reg <= {test_reg,signal};
end
assign signal_up = ((!test_reg ) && signal) ? 1'b1 : 1'b0;//信号上升沿
assignsignal_down=(test_reg && (!test_reg)) ? 1'b1 : 1'b0;//信号下降沿
*****一般都是这么处理的,可以看看------------------------------------------------
-----------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
页:
[1]