OpenCores
URL https://opencores.org/ocsvn/openverifla/openverifla/trunk

Subversion Repositories openverifla

[/] [openverifla/] [trunk/] [openverifla_2.4/] [verilog/] [verifla/] [single_pulse_of_verifla.v] - Blame information for rev 46

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 46 laurentiud
// Update: 20180814_1555, author: Laurentiu Duca
2
// User readable form.
3
// Create Date:    16:17:26 02/23/2007 
4
// Additional Comments: single pulse from a multi-periods-contiguos pulse
5
// Author: Laurentiu Duca
6
// License: GNU GPL
7
 
8
`timescale 1ns / 1ps
9
 
10
module single_pulse_of_verifla(clk, rst_l, ub, ubsing);
11
input clk, rst_l;
12
input ub;
13
output ubsing;
14
 
15
 
16
reg next_state, state;
17
reg ubsing_reg, next_ubsing_reg;
18
 
19
assign ubsing = ubsing_reg;
20
 
21
always @(posedge clk or negedge rst_l)
22
begin
23
        if (~rst_l) begin
24
                        state <= 0;
25
                        ubsing_reg <= 0;
26
        end else begin
27
                        state <= next_state;
28
                        ubsing_reg <= next_ubsing_reg;
29
        end
30
end
31
 
32
always @(*)
33
begin
34
                next_state <= state;
35
                next_ubsing_reg <= 0;
36
                case (state)
37
                0: if (ub == 1) begin
38
                                next_state <= 1;
39
                                next_ubsing_reg <= 1;
40
                        end
41
                1: if (ub == 0)
42
                                next_state <= 0;
43
                endcase
44
end
45
 
46
 
47
/*
48
Truth table
49
====
50
before (posedge clk) | after (posedge clk)
51
ub / state(q1q0) | state(q1q0) / ubsing
52
 
53
1 / 00 | 01 / 1
54
x / 01 | 10 / 0
55
 
56
1 / 10 | 10 / 0
57
 
58
Notes:
59
- works only if the (posedge ub) comes 2 clk periods after the prevoius (negedge ub).
60
- after rst_l, ub can be either 0 or 1.
61
*/
62
 
63
/*
64
reg [1:0] q;
65
assign ubsing = q[0];
66
 
67
always @ (posedge clk or negedge rst_l)
68
begin
69
 
70
if(~rst_l)
71
begin
72
        q[0] <= 0;
73
        q[1] <= 0;
74
end
75
else
76
begin
77
        q[0] <= ~q[0] && ub && ~q[1];
78
        q[1] <= q[0] || (~q[0] && ub && q[1]);
79
end
80
end
81
*/
82
 
83
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.