1
0
mirror of https://github.com/aolofsson/oh.git synced 2025-02-07 06:44:09 +08:00
oh/common/hdl/oh_edgealign.v

51 lines
1.4 KiB
Coq
Raw Normal View History

//#############################################################################
//# Function: Aligns positive edge of slow clock to fast clock #
//# !!!Assumes clocks are aligned and synchronous!!! #
//#############################################################################
//# Author: Andreas Olofsson #
//# License: MIT (see LICENSE file in OH! repository) #
//#############################################################################
/*
2015-11-14 22:41:19 -05:00
* ___________ ___________
* __/ \___________/ \ SLOWCLK
2015-11-14 22:41:19 -05:00
* __ __ __ __ __ __
* _/ \__/ \__/ \__/ \__/ \__/ \__/ FASTCLK
* ___________ _________
* ___/ 1 1 \_0_____0____/ CLK45
* ____________ ___
* ______/ 1 1 \___0____0___/ CLK90
2015-11-14 22:41:19 -05:00
*
* ____ ______
* \________________/ \________ FIRSTEDGE
*
2015-11-14 22:41:19 -05:00
*/
module oh_edgealign (/*AUTOARG*/
2015-11-14 22:41:19 -05:00
// Outputs
firstedge,
// Inputs
fastclk, slowclk
);
input fastclk;
input slowclk;
output firstedge;
reg clk45;
reg clk90;
2015-11-14 22:41:19 -05:00
reg firstedge;
always @ (negedge fastclk)
clk45 <= slowclk;
always @ (posedge fastclk)
2015-11-14 22:41:19 -05:00
begin
clk90 <= clk45;
firstedge <= ~clk45 & clk90;
2015-11-14 22:41:19 -05:00
end
endmodule // oh_edgealign
2015-11-14 22:41:19 -05:00