# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
"""
|
"""
|
gprf.py
|
gprf.py
|
=======
|
=======
|
|
|
General purpose Register File
|
General purpose Register File
|
|
|
:copyright: Copyright (c) 2010 Jian Luo
|
:copyright: Copyright (c) 2010 Jian Luo
|
:author-email: jian.luo.cn(at_)gmail.com
|
:author-email: jian.luo.cn(at_)gmail.com
|
:license: LGPL, see LICENSE for details
|
:license: LGPL, see LICENSE for details
|
:revision: $Id: gprf.py 5 2010-11-21 10:59:30Z rockee $
|
:revision: $Id: gprf.py 6 2010-11-21 23:18:44Z rockee $
|
"""
|
"""
|
|
|
from myhdl import *
|
from myhdl import *
|
from defines import *
|
from defines import *
|
from functions import *
|
from functions import *
|
from dsram import *
|
from dsram import *
|
from debug import *
|
#from debug import *
|
|
|
def GPRF(
|
def GPRF(
|
clock,
|
clock,
|
enable,
|
enable,
|
gprf_adr_a_i,
|
gprf_adr_a_i,
|
gprf_adr_b_i,
|
gprf_adr_b_i,
|
gprf_adr_d_i,
|
gprf_adr_d_i,
|
gprf_dat_w_i,
|
gprf_dat_w_i,
|
gprf_adr_w_i,
|
gprf_adr_w_i,
|
gprf_wre_i,
|
gprf_wre_i,
|
gprf_dat_a_o,
|
gprf_dat_a_o,
|
gprf_dat_b_o,
|
gprf_dat_b_o,
|
gprf_dat_d_o,
|
gprf_dat_d_o,
|
):
|
):
|
a = DSRAM(gprf_dat_a_o, gprf_adr_a_i, enable,
|
a = DSRAM(gprf_dat_a_o, gprf_adr_a_i, enable,
|
gprf_dat_w_i, gprf_adr_w_i, gprf_wre_i, clock,
|
gprf_dat_w_i, gprf_adr_w_i, gprf_wre_i, clock,
|
width=CFG_DMEM_WIDTH, size=CFG_GPRF_SIZE)
|
width=CFG_DMEM_WIDTH, size=CFG_GPRF_SIZE)
|
b = DSRAM(gprf_dat_b_o, gprf_adr_b_i, enable,
|
b = DSRAM(gprf_dat_b_o, gprf_adr_b_i, enable,
|
gprf_dat_w_i, gprf_adr_w_i, gprf_wre_i, clock,
|
gprf_dat_w_i, gprf_adr_w_i, gprf_wre_i, clock,
|
width=CFG_DMEM_WIDTH, size=CFG_GPRF_SIZE)
|
width=CFG_DMEM_WIDTH, size=CFG_GPRF_SIZE)
|
d = DSRAM(gprf_dat_d_o, gprf_adr_d_i, enable,
|
d = DSRAM(gprf_dat_d_o, gprf_adr_d_i, enable,
|
gprf_dat_w_i, gprf_adr_w_i, gprf_wre_i, clock,
|
gprf_dat_w_i, gprf_adr_w_i, gprf_wre_i, clock,
|
width=CFG_DMEM_WIDTH, size=CFG_GPRF_SIZE)
|
width=CFG_DMEM_WIDTH, size=CFG_GPRF_SIZE)
|
|
|
#if __debug__:
|
#if __debug__:
|
#@instance
|
#@instance
|
#def show():
|
#def show():
|
#while DEBUG_VERBOSE:
|
#while DEBUG_VERBOSE:
|
#yield clock.posedge
|
#yield clock.posedge
|
##print 'tick'
|
##print 'tick'
|
#addr_a = gprf_adr_a_i
|
#addr_a = gprf_adr_a_i
|
#addr_b = gprf_adr_b_i
|
#addr_b = gprf_adr_b_i
|
#addr_d = gprf_adr_d_i
|
#addr_d = gprf_adr_d_i
|
#if enable and gprf_wre_i:
|
#if enable and gprf_wre_i:
|
#print 'gprf:\twrite:\t',
|
#print 'gprf:\twrite:\t',
|
#print 'Rd := R%d<-0x%x' % (gprf_adr_w_i, gprf_dat_w_i)
|
#print 'Rd := R%d<-0x%x' % (gprf_adr_w_i, gprf_dat_w_i)
|
#yield delay(1)
|
#yield delay(1)
|
#if enable:
|
#if enable:
|
#print 'gprf:\tread:\t',
|
#print 'gprf:\tread:\t',
|
#print ('Ra := R%d->0x%x, Rb := R%d->0x%x, Rd := R%d->0x%x'
|
#print ('Ra := R%d->0x%x, Rb := R%d->0x%x, Rd := R%d->0x%x'
|
#% (addr_a, gprf_dat_a_o,
|
#% (addr_a, gprf_dat_a_o,
|
#addr_b, gprf_dat_b_o,
|
#addr_b, gprf_dat_b_o,
|
#addr_d, gprf_dat_d_o))
|
#addr_d, gprf_dat_d_o))
|
|
|
|
|
return instances()
|
return instances()
|
|
|
### EOF ###
|
### EOF ###
|
# vim:smarttab:sts=4:ts=4:sw=4:et:ai:tw=80:
|
# vim:smarttab:sts=4:ts=4:sw=4:et:ai:tw=80:
|
|
|
|
|