summaryrefslogtreecommitdiff
path: root/CountdownController.v
diff options
context:
space:
mode:
authorMichael Abed <michaelabed@gmail.com>2012-03-22 16:14:11 -0400
committerMichael Abed <michaelabed@gmail.com>2012-03-22 16:14:11 -0400
commit11a0ed5a6e8af2e224caf1cb782829dfd8737b5e (patch)
tree5c7aa13704d69357887328db7c4926be76858c72 /CountdownController.v
parentbab97470acd4dd09ef19b669ff6c6f933aece0f8 (diff)
downloadec311-lab4-11a0ed5a6e8af2e224caf1cb782829dfd8737b5e.tar.gz
ec311-lab4-11a0ed5a6e8af2e224caf1cb782829dfd8737b5e.tar.bz2
ec311-lab4-11a0ed5a6e8af2e224caf1cb782829dfd8737b5e.zip
updates
Diffstat (limited to 'CountdownController.v')
-rw-r--r--CountdownController.v46
1 files changed, 26 insertions, 20 deletions
diff --git a/CountdownController.v b/CountdownController.v
index 35c84f9..626eef3 100644
--- a/CountdownController.v
+++ b/CountdownController.v
@@ -31,16 +31,20 @@ module CountdownController(
reg [6:0] ssd;
reg [3:0] AN;
-wire [6:0] ssdo;
-wire [3:0] ANo;
+wire [6:0] ssd1;
+wire [6:0] ssd2;
+wire [3:0] AN1;
+wire [3:0] AN2;
// clocks
wire seconds;
wire dbclk;
-wire dispclk;
+wire dispclk;
+
+wire running;
// buttons
-wire a, b;
+wire a, b, c;
// bcd things
wire [3:0] ad, bd;
@@ -50,34 +54,36 @@ wire [3:0] ado, bdo, cdo;
wire [7:0] init;
wire [7:0] tout;
-//ClockDivider dbc(.count(1_000_000), .rst(rst), .clk_in(clk), .clk_out(dbclk));
-//ClockDivider sec(.count(100_000_000), .rst(rst), .clk_in(clk), .clk_out(seconds));
-//ClockDivider dcc(.count(7_500_000), .rst(rst), .clk_in(clk), .clk_out(dispclk));
+ClockDivider dbc(.count(100), .rst(rst), .clk_in(clk), .clk_out(dbclk));
+ClockDivider sec(.count(100_000_000), .rst(rst), .clk_in(clk), .clk_out(seconds));
+ClockDivider dcc(.count(7_500_0), .rst(rst), .clk_in(clk), .clk_out(dispclk));
-ClockDivider dbc(.count(10), .rst(rst), .clk_in(clk), .clk_out(dbclk));
-ClockDivider sec(.count(100), .rst(rst), .clk_in(clk), .clk_out(seconds));
-ClockDivider dcc(.count(25), .rst(rst), .clk_in(clk), .clk_out(dispclk));
+//ClockDivider dbc(.count(24'd10), .rst(rst), .clk_in(clk), .clk_out(dbclk));
+//ClockDivider sec(.count(24'd100), .rst(rst), .clk_in(clk), .clk_out(seconds));
+//ClockDivider dcc(.count(24'd25), .rst(rst), .clk_in(clk), .clk_out(dispclk));
debouncer dbA(.dout(a), .din(btnA), .rst(rst), .clk_1M(dbclk));
debouncer dbB(.dout(b), .din(btnB), .rst(rst), .clk_1M(dbclk));
+debouncer dbC(.dout(c), .din(btnC), .rst(rst), .clk_1M(dbclk));
-Increment inc1(.value(ad), .btn(a));
-Increment inc2(.value(bd), .btn(b));
+Increment inc1(.value(ad), .btn(a), .rst(rst));
+Increment inc2(.value(bd), .btn(b), .rst(rst));
-//Increment inc1(.value(ad), .btn(btnA));
+//Increment inc1(.value(ad), .btn(btnA));
//Increment inc2(.value(bd), .btn(btnB));
-BCD2Bin bcd2b(.hun(0), .ten(ad), .one(bd), .bin(init));
+BCD2Bin bcd2b(.hun(4'd0), .ten(ad), .one(bd), .bin(init));
-Countdown cntdwn(.t(tout), .rst(rst), .init(init), .clk_1hz(seconds), .start(btnC));
+Countdown cntdwn(.t(tout), .running(running), .rst(rst), .init(init), .clk_1hz(seconds), .start(c));
Bin2BCD b2bcb(.hun(cdo), .ten(ado), .one(bdo), .bin(tout));
-DisplayController dispcont(.result(ssdo), .AN(ANo), .A(ado), .B(bdo), .clk_in(dispclk), .rst(rst));
-
-
-assign ssd = ssdo;
-assign AN = ANo;
+DisplayController dispcont1(.result(ssd1), .AN(AN1), .A(ado), .B(bdo), .clk_in(dispclk), .rst(rst));
+DisplayController dispcont2(.result(ssd2), .AN(AN2), .A(ad), .B(bd), .clk_in(dispclk), .rst(rst));
+always @(posedge clk) begin
+ ssd <= running ? ssd1 : ssd2;
+ AN <= running ? AN1 : AN2;
+end
endmodule