Line 29... |
Line 29... |
//
|
//
|
// *Author(s):
|
// *Author(s):
|
// - Olivier Girard, olgirard@gmail.com
|
// - Olivier Girard, olgirard@gmail.com
|
//
|
//
|
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
// $Rev: 23 $
|
// $Rev: 33 $
|
// $LastChangedBy: olivier.girard $
|
// $LastChangedBy: olivier.girard $
|
// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
|
// $LastChangedDate: 2009-12-29 19:18:00 +0100 (Tue, 29 Dec 2009) $
|
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
`include "timescale.v"
|
`include "timescale.v"
|
`include "openMSP430_defines.v"
|
`include "openMSP430_defines.v"
|
|
|
|
|
Line 43... |
Line 43... |
|
|
//
|
//
|
// Wire & Register definition
|
// Wire & Register definition
|
//------------------------------
|
//------------------------------
|
|
|
// RAM interface
|
// Data Memory interface
|
wire [`RAM_MSB:0] ram_addr;
|
wire [`DMEM_MSB:0] dmem_addr;
|
wire ram_cen;
|
wire dmem_cen;
|
wire [15:0] ram_din;
|
wire [15:0] dmem_din;
|
wire [1:0] ram_wen;
|
wire [1:0] dmem_wen;
|
wire [15:0] ram_dout;
|
wire [15:0] dmem_dout;
|
|
|
// ROM interface
|
// Program Memory interface
|
wire [`ROM_MSB:0] rom_addr;
|
wire [`PMEM_MSB:0] pmem_addr;
|
wire rom_cen;
|
wire pmem_cen;
|
wire [15:0] rom_din_dbg;
|
wire [15:0] pmem_din;
|
wire [1:0] rom_wen_dbg;
|
wire [1:0] pmem_wen;
|
wire [15:0] rom_dout;
|
wire [15:0] pmem_dout;
|
|
|
// Peripherals interface
|
// Peripherals interface
|
wire [7:0] per_addr;
|
wire [7:0] per_addr;
|
wire [15:0] per_din;
|
wire [15:0] per_din;
|
wire [15:0] per_dout;
|
wire [15:0] per_dout;
|
Line 168... |
Line 168... |
//
|
//
|
// Initialize ROM
|
// Initialize ROM
|
//------------------------------
|
//------------------------------
|
initial
|
initial
|
begin
|
begin
|
$readmemh("./rom.mem", rom_0.mem);
|
$readmemh("./pmem.mem", pmem_0.mem);
|
end
|
end
|
|
|
//
|
//
|
// Generate Clock & Reset
|
// Generate Clock & Reset
|
//------------------------------
|
//------------------------------
|
Line 220... |
Line 220... |
ta_cci2b = 1'b0;
|
ta_cci2b = 1'b0;
|
end
|
end
|
|
|
|
|
//
|
//
|
// ROM
|
// Program Memory
|
//----------------------------------
|
//----------------------------------
|
|
|
ram #(`ROM_MSB) rom_0 (
|
ram #(`PMEM_MSB) pmem_0 (
|
|
|
// OUTPUTs
|
// OUTPUTs
|
.ram_dout (rom_dout), // ROM data output
|
.ram_dout (pmem_dout), // Program Memory data output
|
|
|
// INPUTs
|
// INPUTs
|
.ram_addr (rom_addr), // ROM address
|
.ram_addr (pmem_addr), // Program Memory address
|
.ram_cen (rom_cen), // ROM chip enable (low active)
|
.ram_cen (pmem_cen), // Program Memory chip enable (low active)
|
.ram_clk (mclk), // ROM clock
|
.ram_clk (mclk), // Program Memory clock
|
.ram_din (rom_din_dbg), // ROM data input
|
.ram_din (pmem_din), // Program Memory data input
|
.ram_wen (rom_wen_dbg) // ROM write enable (low active)
|
.ram_wen (pmem_wen) // Program Memory write enable (low active)
|
);
|
);
|
|
|
|
|
//
|
//
|
// RAM
|
// Data Memory
|
//----------------------------------
|
//----------------------------------
|
|
|
ram #(`RAM_MSB) ram_0 (
|
ram #(`DMEM_MSB) dmem_0 (
|
|
|
// OUTPUTs
|
// OUTPUTs
|
.ram_dout (ram_dout), // RAM data output
|
.ram_dout (dmem_dout), // Data Memory data output
|
|
|
// INPUTs
|
// INPUTs
|
.ram_addr (ram_addr), // RAM address
|
.ram_addr (dmem_addr), // Data Memory address
|
.ram_cen (ram_cen), // RAM chip enable (low active)
|
.ram_cen (dmem_cen), // Data Memory chip enable (low active)
|
.ram_clk (mclk), // RAM clock
|
.ram_clk (mclk), // Data Memory clock
|
.ram_din (ram_din), // RAM data input
|
.ram_din (dmem_din), // Data Memory data input
|
.ram_wen (ram_wen) // RAM write enable (low active)
|
.ram_wen (dmem_wen) // Data Memory write enable (low active)
|
);
|
);
|
|
|
|
|
//
|
//
|
// openMSP430 Instance
|
// openMSP430 Instance
|
Line 265... |
Line 265... |
|
|
// OUTPUTs
|
// OUTPUTs
|
.aclk_en (aclk_en), // ACLK enable
|
.aclk_en (aclk_en), // ACLK enable
|
.dbg_freeze (dbg_freeze), // Freeze peripherals
|
.dbg_freeze (dbg_freeze), // Freeze peripherals
|
.dbg_uart_txd (dbg_uart_txd), // Debug interface: UART TXD
|
.dbg_uart_txd (dbg_uart_txd), // Debug interface: UART TXD
|
|
.dmem_addr (dmem_addr), // Data Memory address
|
|
.dmem_cen (dmem_cen), // Data Memory chip enable (low active)
|
|
.dmem_din (dmem_din), // Data Memory data input
|
|
.dmem_wen (dmem_wen), // Data Memory write enable (low active)
|
.irq_acc (irq_acc), // Interrupt request accepted (one-hot signal)
|
.irq_acc (irq_acc), // Interrupt request accepted (one-hot signal)
|
.mclk (mclk), // Main system clock
|
.mclk (mclk), // Main system clock
|
.per_addr (per_addr), // Peripheral address
|
.per_addr (per_addr), // Peripheral address
|
.per_din (per_din), // Peripheral data input
|
.per_din (per_din), // Peripheral data input
|
.per_wen (per_wen), // Peripheral write enable (high active)
|
.per_wen (per_wen), // Peripheral write enable (high active)
|
.per_en (per_en), // Peripheral enable (high active)
|
.per_en (per_en), // Peripheral enable (high active)
|
|
.pmem_addr (pmem_addr), // Program Memory address
|
|
.pmem_cen (pmem_cen), // Program Memory chip enable (low active)
|
|
.pmem_din (pmem_din), // Program Memory data input (optional)
|
|
.pmem_wen (pmem_wen), // Program Memory write enable (low active) (optional)
|
.puc (puc), // Main system reset
|
.puc (puc), // Main system reset
|
.ram_addr (ram_addr), // RAM address
|
|
.ram_cen (ram_cen), // RAM chip enable (low active)
|
|
.ram_din (ram_din), // RAM data input
|
|
.ram_wen (ram_wen), // RAM write enable (low active)
|
|
.rom_addr (rom_addr), // ROM address
|
|
.rom_cen (rom_cen), // ROM chip enable (low active)
|
|
.rom_din_dbg (rom_din_dbg), // ROM data input --FOR DEBUG INTERFACE--
|
|
.rom_wen_dbg (rom_wen_dbg), // ROM write enable (low active) --FOR DBG IF--
|
|
.smclk_en (smclk_en), // SMCLK enable
|
.smclk_en (smclk_en), // SMCLK enable
|
|
|
// INPUTs
|
// INPUTs
|
.dbg_uart_rxd (dbg_uart_rxd), // Debug interface: UART RXD
|
.dbg_uart_rxd (dbg_uart_rxd), // Debug interface: UART RXD
|
.dco_clk (dco_clk), // Fast oscillator (fast clock)
|
.dco_clk (dco_clk), // Fast oscillator (fast clock)
|
|
.dmem_dout (dmem_dout), // Data Memory data output
|
.irq (irq_in), // Maskable interrupts
|
.irq (irq_in), // Maskable interrupts
|
.lfxt_clk (lfxt_clk), // Low frequency oscillator (typ 32kHz)
|
.lfxt_clk (lfxt_clk), // Low frequency oscillator (typ 32kHz)
|
.nmi (nmi), // Non-maskable interrupt (asynchronous)
|
.nmi (nmi), // Non-maskable interrupt (asynchronous)
|
.per_dout (per_dout), // Peripheral data output
|
.per_dout (per_dout), // Peripheral data output
|
.ram_dout (ram_dout), // RAM data output
|
.pmem_dout (pmem_dout), // Program Memory data output
|
.reset_n (reset_n), // Reset Pin (low active)
|
.reset_n (reset_n) // Reset Pin (low active)
|
.rom_dout (rom_dout) // ROM data output
|
|
);
|
);
|
|
|
//
|
//
|
// Digital I/O
|
// Digital I/O
|
//----------------------------------
|
//----------------------------------
|