class DDR3Command extends Bundle {
val casN = UInt(1.W)
val rasN = UInt(1.W)
val ba = UInt(3.W)
def defaults() = {
casN := 1.U // reset value should be non-zero
rasN := 1.U
ba := 0.U
}
}
class MemoryController extends Module {
val io = IO(new Bundle {
val ddr3 = Output(new DDR3Command())
})
// attempting to model a register with synchronous reset
val nextDDR3Cmd = Reg(new DDR3Command())
when (reset) { // chisel global reset
nextDDR3Cmd.defaults()
} .elsewhen (true.B) {
nextDDR3Cmd.ba := 3.U
nextDDR3Cmd.casN := 0.U
// nextDDR3Cmd.rasN := 0.U // never update this
}
io.ddr3 := nextDDR3Cmd // assign to output
}
always @(posedge clock) begin
if (_T_22) begin
nextDDR3Cmd_casN <= 1'h0;
end else begin
if (reset) begin
nextDDR3Cmd_casN <= 1'h1;
end
end
if (reset) begin
nextDDR3Cmd_rasN <= 1'h1;
end
if (_T_22) begin
nextDDR3Cmd_ba <= 3'h3;
end else begin
if (reset) begin
nextDDR3Cmd_ba <= 3'h0;
end
end
end
class MemoryController extends Module {
val io = IO(new Bundle {
val ddr3 = Output(new DDR3Command())
})
val resetDDR3Cmd = Wire(new DDR3Command())
resetDDR3Cmd.defaults()
// simple register
val nextDDR3Cmd = Reg(new DDR3Command(), init=resetDDR3Cmd)
when (true.B) {
nextDDR3Cmd.ba := 3.U
nextDDR3Cmd.casN := 0.U
nextDDR3Cmd.rasN := 0.U
}
io.ddr3 := nextDDR3Cmd
} assign resetDDR3Cmd_casN = 1'h1;
assign resetDDR3Cmd_rasN = 1'h1;
assign resetDDR3Cmd_ba = 3'h0;
[..]
always @(posedge clock) begin
if (reset) begin
nextDDR3Cmd_casN <= resetDDR3Cmd_casN;
end else begin
nextDDR3Cmd_casN <= 1'h0;
end
if (reset) begin
nextDDR3Cmd_rasN <= resetDDR3Cmd_rasN;
end else begin
nextDDR3Cmd_rasN <= 1'h0;
end
if (reset) begin
nextDDR3Cmd_ba <= resetDDR3Cmd_ba;
end else begin
nextDDR3Cmd_ba <= 3'h3;
end
end
class MyBundle extends Bundle {
val x = UInt(8.W)
val y = UInt(8.W)
}
object MyBundle {
/**
* initialize x and y
* @return
*/
def init1: MyBundle = {
val wire = Wire(new MyBundle)
wire.x := 8.U
wire.y := 9.U
wire
}[...] val regB = RegInit(MyBundle.init1) when (something) {
regC := MyBundle.setX(7, regC)
} |
To view this discussion on the web visit https://groups.google.com/d/msgid/chisel-users/757baa53-163e-4ade-9383-06931b00cb41%40googlegroups.com.--
You received this message because you are subscribed to the Google Groups "chisel-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chisel-users+unsubscribe@googlegroups.com.
To post to this group, send email to chisel...@googlegroups.com.