1
0

Merge remote-tracking branch 'origin/master' into i2c

This commit is contained in:
Alex Solomatnikov 2017-02-09 18:45:35 -08:00
commit a915e84a9e
8 changed files with 33 additions and 33 deletions

View File

@ -30,8 +30,8 @@ class PWMGPIOPort(c: PWMBundleConfig)(implicit p: Parameters) extends Module {
trait PeripheryPWM { trait PeripheryPWM {
this: TopNetwork { val pwmConfigs: Seq[PWMConfig] } => this: TopNetwork { val pwmConfigs: Seq[PWMConfig] } =>
val pwmDevices = (pwmConfigs.zipWithIndex) map { case (c, i) => val pwm = (pwmConfigs.zipWithIndex) map { case (c, i) =>
val pwm = LazyModule(new TLPWM(c) { override lazy val valName = Some(s"pwm$i") }) val pwm = LazyModule(new TLPWM(c))
pwm.node := TLFragmenter(peripheryBusConfig.beatBytes, cacheBlockBytes)(peripheryBus.node) pwm.node := TLFragmenter(peripheryBusConfig.beatBytes, cacheBlockBytes)(peripheryBus.node)
intBus.intnode := pwm.intnode intBus.intnode := pwm.intnode
pwm pwm
@ -52,7 +52,7 @@ trait PeripheryPWMModule {
val outer: PeripheryPWM val outer: PeripheryPWM
val io: PeripheryPWMBundle val io: PeripheryPWMBundle
} => } =>
(io.pwms.zipWithIndex zip outer.pwmDevices) foreach { case ((io, i), device) => (io.pwms.zipWithIndex zip outer.pwm) foreach { case ((io, i), device) =>
io.port := device.module.io.gpio io.port := device.module.io.gpio
} }
} }

View File

@ -5,29 +5,29 @@ import Chisel._
object SPIProtocol { object SPIProtocol {
val width = 2 val width = 2
val Single = UInt(0, width) def Single = UInt(0, width)
val Dual = UInt(1, width) def Dual = UInt(1, width)
val Quad = UInt(2, width) def Quad = UInt(2, width)
val cases = Seq(Single, Dual, Quad) def cases = Seq(Single, Dual, Quad)
def decode(x: UInt): Seq[Bool] = cases.map(_ === x) def decode(x: UInt): Seq[Bool] = cases.map(_ === x)
} }
object SPIDirection { object SPIDirection {
val width = 1 val width = 1
val Rx = UInt(0, width) def Rx = UInt(0, width)
val Tx = UInt(1, width) def Tx = UInt(1, width)
} }
object SPIEndian { object SPIEndian {
val width = 1 val width = 1
val MSB = UInt(0, width) def MSB = UInt(0, width)
val LSB = UInt(1, width) def LSB = UInt(1, width)
} }
object SPICSMode { object SPICSMode {
val width = 2 val width = 2
val Auto = UInt(0, width) def Auto = UInt(0, width)
val Hold = UInt(2, width) def Hold = UInt(2, width)
val Off = UInt(3, width) def Off = UInt(3, width)
} }

View File

@ -8,8 +8,8 @@ import rocketchip.{TopNetwork,TopNetworkModule}
trait PeripherySPI { trait PeripherySPI {
this: TopNetwork { val spiConfigs: Seq[SPIConfig] } => this: TopNetwork { val spiConfigs: Seq[SPIConfig] } =>
val spiDevices = (spiConfigs.zipWithIndex) map {case (c, i) => val spi = (spiConfigs.zipWithIndex) map {case (c, i) =>
val spi = LazyModule(new TLSPI(c) { override lazy val valName = Some(s"spi$i") } ) val spi = LazyModule(new TLSPI(c))
spi.rnode := TLFragmenter(peripheryBusConfig.beatBytes, cacheBlockBytes)(peripheryBus.node) spi.rnode := TLFragmenter(peripheryBusConfig.beatBytes, cacheBlockBytes)(peripheryBus.node)
intBus.intnode := spi.intnode intBus.intnode := spi.intnode
spi spi
@ -28,7 +28,7 @@ trait PeripherySPIModule {
val outer: PeripherySPI val outer: PeripherySPI
val io: PeripherySPIBundle val io: PeripherySPIBundle
} => } =>
(io.spis zip outer.spiDevices).foreach { case (io, device) => (io.spis zip outer.spi).foreach { case (io, device) =>
io <> device.module.io.port io <> device.module.io.port
} }
} }

View File

@ -12,8 +12,8 @@ class SPIMicroOp(c: SPIConfigBase) extends SPIBundle(c) {
} }
object SPIMicroOp { object SPIMicroOp {
val Transfer = UInt(0, 1) def Transfer = UInt(0, 1)
val Delay = UInt(1, 1) def Delay = UInt(1, 1)
} }
class SPIPhyControl(c: SPIConfigBase) extends SPIBundle(c) { class SPIPhyControl(c: SPIConfigBase) extends SPIBundle(c) {

View File

@ -14,8 +14,8 @@ trait PeripheryUART {
this: TopNetwork { this: TopNetwork {
val uartConfigs: Seq[UARTConfig] val uartConfigs: Seq[UARTConfig]
} => } =>
val uartDevices = uartConfigs.zipWithIndex.map { case (c, i) => val uart = uartConfigs.zipWithIndex.map { case (c, i) =>
val uart = LazyModule(new UART(c) { override lazy val valName = Some(s"uart$i") } ) val uart = LazyModule(new UART(c))
uart.node := TLFragmenter(peripheryBusConfig.beatBytes, cacheBlockBytes)(peripheryBus.node) uart.node := TLFragmenter(peripheryBusConfig.beatBytes, cacheBlockBytes)(peripheryBus.node)
intBus.intnode := uart.intnode intBus.intnode := uart.intnode
uart uart
@ -32,7 +32,7 @@ trait PeripheryUARTModule {
val outer: PeripheryUART val outer: PeripheryUART
val io: PeripheryUARTBundle val io: PeripheryUARTBundle
} => } =>
(io.uarts zip outer.uartDevices).foreach { case (io, device) => (io.uarts zip outer.uart).foreach { case (io, device) =>
io <> device.module.io.port io <> device.module.io.port
} }
} }

View File

@ -11,7 +11,7 @@ trait PeripheryXilinxVC707MIG extends TopNetwork {
val xilinxvc707mig = LazyModule(new XilinxVC707MIG) val xilinxvc707mig = LazyModule(new XilinxVC707MIG)
require(p(BankedL2Config).nMemoryChannels == 1, "Coreplex must have 1 master memory port") require(p(BankedL2Config).nMemoryChannels == 1, "Coreplex must have 1 master memory port")
val mem = Seq(xilinxvc707mig.node) xilinxvc707mig.node := mem(0).node
} }
trait PeripheryXilinxVC707MIGBundle extends TopNetworkBundle { trait PeripheryXilinxVC707MIGBundle extends TopNetworkBundle {

View File

@ -3,10 +3,10 @@ package sifive.blocks.devices.xilinxvc707pciex1
import Chisel._ import Chisel._
import diplomacy.LazyModule import diplomacy.LazyModule
import rocketchip.{L2Crossbar,L2CrossbarModule,L2CrossbarBundle} import rocketchip.{TopNetwork,TopNetworkModule,TopNetworkBundle}
import uncore.tilelink2.TLWidthWidget import uncore.tilelink2.TLWidthWidget
trait PeripheryXilinxVC707PCIeX1 extends L2Crossbar { trait PeripheryXilinxVC707PCIeX1 extends TopNetwork {
val xilinxvc707pcie = LazyModule(new XilinxVC707PCIeX1) val xilinxvc707pcie = LazyModule(new XilinxVC707PCIeX1)
l2.node := xilinxvc707pcie.master l2.node := xilinxvc707pcie.master
@ -15,11 +15,11 @@ trait PeripheryXilinxVC707PCIeX1 extends L2Crossbar {
intBus.intnode := xilinxvc707pcie.intnode intBus.intnode := xilinxvc707pcie.intnode
} }
trait PeripheryXilinxVC707PCIeX1Bundle extends L2CrossbarBundle { trait PeripheryXilinxVC707PCIeX1Bundle extends TopNetworkBundle {
val xilinxvc707pcie = new XilinxVC707PCIeX1IO val xilinxvc707pcie = new XilinxVC707PCIeX1IO
} }
trait PeripheryXilinxVC707PCIeX1Module extends L2CrossbarModule { trait PeripheryXilinxVC707PCIeX1Module extends TopNetworkModule {
val outer: PeripheryXilinxVC707PCIeX1 val outer: PeripheryXilinxVC707PCIeX1
val io: PeripheryXilinxVC707PCIeX1Bundle val io: PeripheryXilinxVC707PCIeX1Bundle

View File

@ -167,27 +167,27 @@ class vc707axi_to_pcie_x1() extends BlackBox
class VC707AXIToPCIeX1(implicit p:Parameters) extends LazyModule class VC707AXIToPCIeX1(implicit p:Parameters) extends LazyModule
{ {
val slave = AXI4SlaveNode(AXI4SlavePortParameters( val slave = AXI4SlaveNode(Seq(AXI4SlavePortParameters(
slaves = Seq(AXI4SlaveParameters( slaves = Seq(AXI4SlaveParameters(
address = List(AddressSet(0x60000000L, 0x1fffffffL)), address = List(AddressSet(0x60000000L, 0x1fffffffL)),
executable = true, executable = true,
supportsWrite = TransferSizes(1, 256), supportsWrite = TransferSizes(1, 256),
supportsRead = TransferSizes(1, 256), supportsRead = TransferSizes(1, 256),
interleavedId = Some(0))), // the Xilinx IP is friendly interleavedId = Some(0))), // the Xilinx IP is friendly
beatBytes = 8)) beatBytes = 8)))
val control = AXI4SlaveNode(AXI4SlavePortParameters( val control = AXI4SlaveNode(Seq(AXI4SlavePortParameters(
slaves = Seq(AXI4SlaveParameters( slaves = Seq(AXI4SlaveParameters(
address = List(AddressSet(0x50000000L, 0x03ffffffL)), address = List(AddressSet(0x50000000L, 0x03ffffffL)),
supportsWrite = TransferSizes(1, 4), supportsWrite = TransferSizes(1, 4),
supportsRead = TransferSizes(1, 4), supportsRead = TransferSizes(1, 4),
interleavedId = Some(0))), // no read interleaving b/c AXI-lite interleavedId = Some(0))), // no read interleaving b/c AXI-lite
beatBytes = 4)) beatBytes = 4)))
val master = AXI4MasterNode(AXI4MasterPortParameters( val master = AXI4MasterNode(Seq(AXI4MasterPortParameters(
masters = Seq(AXI4MasterParameters( masters = Seq(AXI4MasterParameters(
id = IdRange(0, 1), id = IdRange(0, 1),
aligned = false)))) aligned = false)))))
lazy val module = new LazyModuleImp(this) { lazy val module = new LazyModuleImp(this) {
// The master on the control port must be AXI-lite // The master on the control port must be AXI-lite