blob: a3cfdeb5bc63bdb710f50d9b6cd7420c0047fb22 [file] [log] [blame]
// Copyright 2007 Altera Corporation. All rights reserved.
// Altera products are protected under numerous U.S. and foreign patents,
// maskwork rights, copyrights and other intellectual property laws.
//
// This reference design file, and your use thereof, is subject to and governed
// by the terms and conditions of the applicable Altera Reference Design
// License Agreement (either as signed by you or found at www.altera.com). By
// using this reference design file, you indicate your acceptance of such terms
// and conditions between you and Altera Corporation. In the event that you do
// not agree with such terms and conditions, you may not use the reference
// design file and please promptly destroy any copies you have made.
//
// This reference design file is being provided on an "as-is" basis and as an
// accommodation and therefore all warranties, representations or guarantees of
// any kind (whether express, implied or statutory) including, without
// limitation, warranties of merchantability, non-infringement, or fitness for
// a particular purpose, are specifically disclaimed. By making this reference
// design file available, Altera expressly does not recommend, suggest or
// require that this reference design file be used in combination with any
// other product not provided by Altera.
/////////////////////////////////////////////////////////////////////////////
// baeckler - 06-16-2006
// Modified by Jun (Jerry) Yin - 12-01-2022
// Standard issue binary counter with all of the register secondary
// hardware. (1 cell per bit)
module cntr_example #(
parameter BITS = 20
)(
`ifdef USE_POWER_PINS
inout vdd, // User area 1 1.8V supply
inout vss, // User area 1 digital ground
`endif
// Wishbone Slave ports (WB MI A)
input wire wb_clk_i,
input wire wb_rst_i,
//input wire wbs_stb_i,
//input wire wbs_cyc_i,
//input wire wbs_we_i,
//input [3:0] wbs_sel_i,
//input [31:0] wbs_dat_i,
//input [31:0] wbs_adr_i,
//output wbs_ack_o,
//output [31:0] wbs_dat_o,
// Logic Analyzer Signals
//input [63:0] la_data_in,
//output [63:0] la_data_out,
//input [63:0] la_oenb,
// IOs
//input [`MPRJ_IO_PADS-1:0] io_in,
output [`MPRJ_IO_PADS-1:0] io_out,
//output [`MPRJ_IO_PADS-1:0] io_oeb,
// IRQ
//output [2:0] irq
);
wire clk;
wire rst;
//wire [`MPRJ_IO_PADS-1:0] io_in;
//wire [`MPRJ_IO_PADS-1:0] io_out;
//wire [`MPRJ_IO_PADS-1:0] io_oeb;
//wire [31:0] rdata;
//wire [31:0] wdata;
//wire [BITS-1:0] count;
//wire valid;
//wire [3:0] wstrb;
//wire [31:0] la_write;
// WB MI A
//assign valid = wbs_cyc_i && wbs_stb_i;
//assign wstrb = wbs_sel_i & {4{wbs_we_i}};
//assign wbs_dat_o = rdata;
//assign wdata = wbs_dat_i;
// IO
//assign io_out = count;
//assign io_oeb = {(`MPRJ_IO_PADS-1){rst}};
// IRQ
//assign irq = 3'b000; // Unused
// LA
//assign la_data_out = {{(127-BITS){1'b0}}, count};
// Assuming LA probes [63:32] are for controlling the count register
//assign la_write = ~la_oenb[63:32] & ~{BITS{valid}};
// Assuming LA probes [65:64] are for controlling the count clk & reset
//assign clk = (~la_oenb[64]) ? la_data_in[64]: wb_clk_i;
//assign rst = (~la_oenb[65]) ? la_data_in[65]: wb_rst_i;
assign clk = wb_clk_i;
assign rst = wb_rst_i;
cntr_1 #(
.BITS(BITS)
) cntr_1(
.clk(clk),
.rstn(rst),
.out1(io_out[BITS-17:0])
);
cntr_2 #(
.BITS(BITS)
) cntr_2(
.clk(clk),
.rstn(rst),
.out2(io_out[BITS-13:BITS-16])
);
cntr_3 #(
.BITS(BITS)
) cntr_3(
.clk(clk),
.rstn(rst),
.out3(io_out[BITS-9:BITS-12])
);
cntr_4 #(
.BITS(BITS)
) cntr_4(
.clk(clk),
.rstn(rst),
.out4(io_out[BITS-5:BITS-8])
);
cntr_5 #(
.BITS(BITS)
) cntr_5(
.clk(clk),
.rstn(rst),
.out5(io_out[BITS-1:BITS-4])
);
// cntr_6 #(
// .BITS(BITS)
// ) cntr_6(
// .clk(clk),
// .rstn(rst),
// .out6(io_out[BITS-13:BITS-16])
// );
// cntr_7 #(
// .BITS(BITS)
// ) cntr_7(
// .clk(clk),
// .rstn(rst),
// .out7(io_out[BITS-9:BITS-6])
// );
// cntr_8 #(
// .BITS(BITS)
// ) cntr_8(
// .clk(clk),
// .rstn(rst),
// .out8(io_out[BITS-5:BITS-8])
// );
// cntr_9 #(
// .BITS(BITS)
// ) cntr_9(
// .clk(clk),
// .rstn(rst),
// .out9(io_out[BITS-1:BITS-4])
// );
endmodule
module cntr_1 #(
parameter BITS=4
)(
input clk, // Declare input port for the clock to allow counter to count up
input rstn, // Declare input port for the reset to allow the counter to be reset to 0 when required
output reg[BITS-1:0] out1 // Declare 4-bit output port to get the counter values
);
// This always block will be triggered at the rising edge of clk (0->1)
// Once inside this block, it checks if the reset is 0, then change out to zero
// If reset is 1, then the design should be allowed to count up, so increment the counter
always @ (posedge clk) begin
if (! rstn)
out1 <= 0;
else
out1 <= out1 + 1;
end
endmodule
module cntr_2 #(
parameter BITS=4
)(
input clk, // Declare input port for the clock to allow counter to count up
input rstn, // Declare input port for the reset to allow the counter to be reset to 0 when required
output reg[BITS-1:0] out2 // Declare 4-bit output port to get the counter values
);
// This always block will be triggered at the rising edge of clk (0->1)
// Once inside this block, it checks if the reset is 0, then change out to zero
// If reset is 1, then the design should be allowed to count up, so increment the counter
always @ (posedge clk) begin
if (! rstn)
out2 <= 0;
else
out2 <= out2 + 1;
end
endmodule
module cntr_3 #(
parameter BITS=4
)(
input clk, // Declare input port for the clock to allow counter to count up
input rstn, // Declare input port for the reset to allow the counter to be reset to 0 when required
output reg[BITS-1:0] out3 // Declare 4-bit output port to get the counter values
);
// This always block will be triggered at the rising edge of clk (0->1)
// Once inside this block, it checks if the reset is 0, then change out to zero
// If reset is 1, then the design should be allowed to count up, so increment the counter
always @ (posedge clk) begin
if (! rstn)
out3 <= 0;
else
out3 <= out3 + 1;
end
endmodule
module cntr_4 #(
parameter BITS=4
)(
input clk, // Declare input port for the clock to allow counter to count up
input rstn, // Declare input port for the reset to allow the counter to be reset to 0 when required
output reg[BITS-1:0] out4 // Declare 4-bit output port to get the counter values
);
// This always block will be triggered at the rising edge of clk (0->1)
// Once inside this block, it checks if the reset is 0, then change out to zero
// If reset is 1, then the design should be allowed to count up, so increment the counter
always @ (posedge clk) begin
if (! rstn)
out4 <= 0;
else
out4 <= out4 + 1;
end
endmodule
module cntr_5 #(
parameter BITS=4
)(
input clk, // Declare input port for the clock to allow counter to count up
input rstn, // Declare input port for the reset to allow the counter to be reset to 0 when required
output reg[BITS-1:0] out5 // Declare 4-bit output port to get the counter values
);
// This always block will be triggered at the rising edge of clk (0->1)
// Once inside this block, it checks if the reset is 0, then change out to zero
// If reset is 1, then the design should be allowed to count up, so increment the counter
always @ (posedge clk) begin
if (! rstn)
out5 <= 0;
else
out5 <= out5 + 1;
end
endmodule
// module cntr_6 #(
// parameter BITS=4
// )(
// input clk, // Declare input port for the clock to allow counter to count up
// input rstn, // Declare input port for the reset to allow the counter to be reset to 0 when required
// output reg[BITS-1:0] out6 // Declare 4-bit output port to get the counter values
// );
// // This always block will be triggered at the rising edge of clk (0->1)
// // Once inside this block, it checks if the reset is 0, then change out to zero
// // If reset is 1, then the design should be allowed to count up, so increment the counter
// always @ (posedge clk) begin
// if (! rstn)
// out6 <= 0;
// else
// out6 <= out6 + 1;
// end
// endmodule
// module cntr_7 #(
// parameter BITS=4
// )(
// input clk, // Declare input port for the clock to allow counter to count up
// input rstn, // Declare input port for the reset to allow the counter to be reset to 0 when required
// output reg[BITS-1:0] out7 // Declare 4-bit output port to get the counter values
// );
// // This always block will be triggered at the rising edge of clk (0->1)
// // Once inside this block, it checks if the reset is 0, then change out to zero
// // If reset is 1, then the design should be allowed to count up, so increment the counter
// always @ (posedge clk) begin
// if (! rstn)
// out7 <= 0;
// else
// out7 <= out7 + 1;
// end
// endmodule
// module cntr_8 #(
// parameter BITS=4
// )(
// input clk, // Declare input port for the clock to allow counter to count up
// input rstn, // Declare input port for the reset to allow the counter to be reset to 0 when required
// output reg[BITS-1:0] out8 // Declare 4-bit output port to get the counter values
// );
// // This always block will be triggered at the rising edge of clk (0->1)
// // Once inside this block, it checks if the reset is 0, then change out to zero
// // If reset is 1, then the design should be allowed to count up, so increment the counter
// always @ (posedge clk) begin
// if (! rstn)
// out8 <= 0;
// else
// out8 <= out8 + 1;
// end
// endmodule
// module cntr_9 #(
// parameter BITS=4
// )(
// input clk, // Declare input port for the clock to allow counter to count up
// input rstn, // Declare input port for the reset to allow the counter to be reset to 0 when required
// output reg[BITS-1:0] out9 // Declare 4-bit output port to get the counter values
// );
// // This always block will be triggered at the rising edge of clk (0->1)
// // Once inside this block, it checks if the reset is 0, then change out to zero
// // If reset is 1, then the design should be allowed to count up, so increment the counter
// always @ (posedge clk) begin
// if (! rstn)
// out9 <= 0;
// else
// out9 <= out9 + 1;
// end
// endmodule
`default_nettype wire