【verilog每日一练】识别信号边沿 - FPGA开发者技术社区 - 电子技术william hill官网 - 广受欢迎的专业电子william hill官网 - 威廉希尔官方网站
分享 收藏 返回

Mill 关注 私信
[问答]

【verilog每日一练】识别信号边沿

题目:请用verilog实现signal信号上升沿的识别,每识别到上升沿将flag信号拉高1个时钟周期

image.png

回帖(8)

卿小小_9e6

2023-8-21 18:29:57
本帖最后由 卿小小_9e6 于 2023-8-22 09:33 编辑
  1. module  edge_check(
  2.     input       clk             ,
  3.     input       signal          ,
  4.     output wire signal_1d       ,
  5.     output wire flag
  6. );
  7. reg     signal_reg              ;
  8. reg     flag_reg                ;
  9. always@(posedge clk)
  10. begin
  11.     signal_reg <= signal        ;
  12. end
  13. assign signal_1d = signal_reg   ;
  14. always@(posedge clk)
  15. begin
  16.     flag_reg   <=  signal && (!signal_reg)   ;
  17. end
  18. assign flag = flag_reg          ;
  19. endmodule
1

zealsoft

2023-8-21 20:15:14
module RisingEdgeDetector (
  input wire signal,
  input wire clk,
  input wire signal_1d,
  output reg flag
);

reg signal_prev;

always @(posedge clk) begin
  signal_prev <= signal_1d;
  
  if (signal && !signal_prev) begin
    flag <= 1;
  end else begin
    flag <= 0;
  end
end

endmodule

jf_99074111

2023-8-21 21:20:58
reg     signal_1d;
always@(posedge clk)
begin
    signal_1d <= signal;
end

reg flag;
always@(posedge clk or negedge rst_n)
begin
    if(!rst_n)
        flag <= 1'b0;
    else if((signal==1'b1)&&(signal_1d==1'b0))
        flag <= 1'b1;
     else
        flag <= 1'b0;
end

hehung

2023-8-23 08:33:25
module edge_detect(
  input clk,
  input signal,
  output signal_1d,
  output reg flag
);

always @(posedge clk) begin
  signal_1d <= signal;
  if((signal == 1'b1) && (signal_1d == 1'b0))
    flag <= 1'b1;
  else
    flag <= 1'b0;
end

更多回帖

×
发帖