| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- `timescale 1ns / 1ps
- //////////////////////////////////////////////////////////////////////////////////
- // Company:
- // Engineer: Churbanov S.
- //
- // Create Date: 15:22:20 12/08/2019
- // Design Name:
- // Module Name: Win_parameters
- // Project Name: Compact_main
- // Target Devices:
- // Tool versions:
- // Description:
- //
- // Dependencies:
- //
- // Revision:
- // Revision 0.01 - File Created
- // Additional Comments:
- //
- //////////////////////////////////////////////////////////////////////////////////
- module NcoRstGen
- (
- input Clk_i,
- input Rst_i,
- input [31:0] NcoPhInc_i,
- input StartMeasEvent_i,
-
- output NcoRst_o,
- output StartMeasEvent_o
- );
- //================================================================================
- // REG/WIRE
- //================================================================================
- reg [15:0] startMeasEventReg;
- reg [31:0] ncoPhIncReg;
- reg [31:0] ncoPhIncRegR;
-
- wire ncoPhIncUpdateFlag = (ncoPhIncRegR!=ncoPhIncReg);
- wire delFlag = (startMeasEventReg[15]);
-
- reg [1:0] currState;
-
- reg rst;
- //================================================================================
- // PARAMETERS
- //================================================================================
- parameter [1:0] IDLE = 2'd0;
- parameter [1:0] RST = 2'd1;
- parameter [1:0] DEL = 2'd2;
- //================================================================================
- // ASSIGNMENTS
- // ================================================================================
- assign NcoRst_o = rst;
- assign StartMeasEvent_o = (currState == IDLE)? StartMeasEvent_i:startMeasEventReg[15];
- //================================================================================
- // CODING
- //================================================================================
- always @(posedge Clk_i) begin
- if (!Rst_i) begin
- ncoPhIncReg <= NcoPhInc_i;
- ncoPhIncRegR <= ncoPhIncReg;
- end else begin
- ncoPhIncReg <= 0;
- ncoPhIncRegR <= 0;
- end
- end
-
- always @(posedge Clk_i) begin
- if (!Rst_i) begin
- startMeasEventReg <= {startMeasEventReg[15:0],StartMeasEvent_i};
- end else begin
- startMeasEventReg <= 0;
- end
- end
-
- always @(posedge Clk_i) begin
- if (!Rst_i) begin
- case(currState)
- IDLE : begin
- if (ncoPhIncUpdateFlag) begin
- currState <= RST;
- rst <= 1'b1;
- end else begin
- currState <= IDLE;
- rst <= 1'b0;
- end
- end
-
- RST : begin
- if (rst & StartMeasEvent_i) begin
- currState <= DEL;
- rst <= 1'b0;
- end else begin
- currState <= RST;
- rst <= 1'b1;
- end
- end
-
- DEL : begin
- if (delFlag) begin
- currState <= IDLE;
- rst <= 1'b0;
- end else begin
- currState <= DEL;
- rst <= 1'b0;
- end
- end
- endcase
- end else begin
- currState <= 2'd0;
- end
- end
- endmodule
|