OpenCores
URL https://opencores.org/ocsvn/Aquarius/Aquarius/trunk

Subversion Repositories Aquarius

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 6 to Rev 7
    Reverse comparison

Rev 6 → Rev 7

/tags/add/application/shc_pi/main.srec
0,0 → 1,180
S00C00006D61696E2E7372656373
S315000020000000200800004000D805480BEE00AFFE97
S315000020100009000900090009000900090009000972
S315000020200000203000090009000900090009000924
S315000020302FE64F227FEC6EF3D50BE611D10B410B49
S3150000204064E3D10B410B0009D10AE400410B65E3BF
S31500002050D109410B0009D109410B00097E146FE338
S315000020604F26000B6EF6000900002AE000002A4CFD
S3150000207000002580000023E0000020800000229060
S315000020802F862F962FA62FB62FC62FD62FE64F2296
S315000020906EF3E800E9009256D52CE100D62CD72D38
S315000020A0D32D00096093309C051506150715790197
S315000020B039278FF70315D226E1502211D2259143F5
S315000020C0221128888F35E901DD21DC246A23DB22F1
S315000020D064D30009E5194C0B66D3983664A365836F
S315000020E04C0B66A364A365834C0B66A364D365A3FC
S315000020F0D11B410B66B36593359C75FF655D64B373
S315000021004C0B66B3E101219921188D096803D60F9E
S31500002110D1146463410B65B3A00879010009000975
S31500002120D60AD50DD10E410B6463790128888DD16D
S3150000213064D36FE34F266EF66DF66CF66BF66AF6B1
S3150000214069F6000B68F6010103BC00EF00002F28BA
S3150000215000002B2000002D240000312C000022203E
S31500002160000021C0000021700009000900090009D3
S315000021702F862F962FE66EF3E700931B991B981B6D
S3150000218060330009303C014D025D312C6273321C14
S315000021900625612D31968F04E700E7016123318C16
S315000021A0061573FF43118DED60336FE36EF669F626
S315000021B0000B68F60101270FD8F000090009000995
S315000021C02F862FE66EF3E2009721982160730009AF
S315000021D0307C015D312C621D034D613D31228F073C
S315000021E0613331280615A00AE2000009000900093A
S315000021F06073307C328C014D31280615E20177FF81
S3150000220047118DE560736FE36EF6000B68F601010A
S31500002210D8F00009000900090009000900090009B1
S315000022202F862F962FA62FB62FC62FD62FE64F22F4
S315000022306EF36A436963665DE801E200E700DD1359
S315000022409C229B226073307C01AD611D312C64138E
S315000022504D0B656363030367021A312801C72338F0
S315000022608D01021AE8006073307C770137B78FE979
S31500002270093560836FE34F266EF66DF66CF66BF6E6
S315000022806AF669F6000B68F627100101000029C0FE
S315000022902F862F962FA62FB62FC62FD62FE64F2284
S315000022A07FD86EF3D521E811D92164E3490B668303
S315000022B064E37414D51F490B6683DD1FDC1FDB2026
S315000022C0E40000094D0B65E3E41065E34D0B75145E
S315000022D04C0BE900D11B410BE80000096A934A0840
S315000022E04A0828888F0360834B0BE40060838804C8
S315000022F08F0361834B0BE4106183318C60A3301C28
S31500002300D111041DD111410B644D7801E107381735
S315000023108FE828884C0B7901D10A410B0009E11F8F
S3150000232039178FDBE800AFCDE400000900002AF47E
S3150000233000002A4C00002B08000023E00000266065
S31500002340000024500000261000002F2A0000235011
S315000023502F862F962FE64F226EF36843688DD11C89
S315000023603815040A440944094409644D912F241E72
S31500002370011A3818688D7430D916490B644CD11679
S315000023803815040A440944014409644DE164241ED5
S31500002390011A3818688D7430490B644CD10F6112DC
S315000023A03815040A44094401644DE10A241E011A41
S315000023B03818688D7430490B644C7830688C490B3A
S315000023C064836FE34F266EF669F6000B68F603E842
S315000023D010624DD30000242051EB851F00002B1CFA
S315000023E02F862F962FE64F226EF36853D10A410BA4
S315000023F0644C618021188D096413D908644C000966
S31500002400490B7801648024488FFA644C6FE34F26A9
S315000024106EF669F6000B68F60000245000002420D2
S315000024202F862FE64F226EF36843D106410B688C48
S31500002430D105E401410B65836FE34F266EF6000B71
S3150000244068F6000900002490000025200009000914
S315000024502F862FE64F226043E81F2809E10F381622
S315000024608F016EF37830910C281BD106410B0009C1
S31500002470D105E400410B65836FE34F266EF6000B32
S3150000248068F600800000249000002520000900095D
S315000024902F862FE64F226EF3D8050009480BE4007D
S315000024A0C98020088BFA6FE34F266EF6000B68F69C
S315000024B0000024C0000900090009000900090009FC
S315000024C02FE66EF36543D214632373026053C9018A
S315000024D0E102210B231061206120CB062300E200DC
S315000024E0E30AD70D6170720132378BFBD10A621392
S315000024F072036220662C71026053C901CB0221006F
S31500002500E200E30AD70400096170720132378FFBDB
S3150000251060636FE3000B6EF6ABCD000000090009A7
S315000025202FE66EF36643655CD21161237103215079
S3150000253071FF6063C901210063206220CB04210082
S31500002540E200E30AD70A00096170720132378FFB95
S315000025506063D108C9012100E200E30AD70400093B
S315000025606170720132378BFB6FE3000B6EF6000968
S31500002570ABCD0000ABCD000200090009000900093F
S315000025802F862F962FE64F226EF3D11BE400410BC8
S31500002590E530E200D319D71A6170720132378FFB2A
S315000025A0E400D115410BE530E2009324D71400096D
S315000025B06170720132378FFBE400D90F490BE530A9
S315000025C0D810480B0009E400490BE538480B000910
S315000025D0E400490BE50C480B0009E400490BE50152
S315000025E0480B0009E400490BE5066FE34F266EF63B
S315000025F069F6000B68F607CF000025200001404F62
S31500002600ABCD000000002490000900090009000974
S315000026102F862F962FA62FE64F22DA0C9915D80C67
S31500002620A0086EF300090009000900090009000965
S31500002630480BE4084A0B0009309089F96FE34F26EE
S315000026406EF66AF669F6000B68F600FF000026B023
S315000026500000299000090009000900090009000985
S315000026602F862F962FA62FE64F22DA0C9915D80C17
S31500002670A0086EF300090009000900090009000915
S31500002680480BE4084A0B000930908BF96FE34F269C
S315000026906EF66AF669F6000B68F600FF000026B0D3
S315000026A00000299000090009000900090009000935
S315000026B02F862F962FA62FB62FC62FD62FE64F2260
S315000026C06EF3D817E1EF2810D916490BE4016080A4
S315000026D0ED1F2D09E1F72810490BE4016080EC1F7E
S315000026E02C09E1FB2810490BE4016080EB1F2B0944
S315000026F0E1FD2810490BE4016080EA1F2A09E1FE8A
S315000027002810490BE4016080E21FE10768D378E9ED
S3150000271038168D2D2209C704018C012300090009F2
S31500002720ABCD000100002990125252522252324281
S31500002730A11FE013000900090009000900090009AA
S31500002740A117E012000900090009000900090009A3
S31500002750A10FE0110009000900090009000900099C
S31500002760A107E01000090009000900090009000995
S31500002770E10F68C378F13816893BC702018C012343
S31500002780000900091E6E6E6E6E6E6E6E2E6E6E6E99
S315000027903E6E4E5E000900090009000900090009A5
S315000027A0A0E7E01400090009000900090009000972
S315000027B0A0DFE00F0009000900090009000900096F
S315000027C0A0D7E00E00090009000900090009000968
S315000027D0A0CFE00D00090009000900090009000961
S315000027E0A0C7E00C0009000900090009000900095A
S315000027F0E10F68B378F138168D3BE10FC701018C04
S31500002800012300091C6C6C6C6C6C6C6C2C6C6C6C15
S315000028103C6C4C5C0009000900090009000900092C
S31500002820A0A7E01500090009000900090009000930
S31500002830A09FE00B00090009000900090009000932
S31500002840A097E00A0009000900090009000900092B
S31500002850A08FE00900090009000900090009000924
S31500002860A087E0080009000900090009000900091D
S31500002870E10F68A378F138168D3BE10FC701018C93
S31500002880012300091C6C6C6C6C6C6C6C2C6C6C6C95
S315000028903C6C4C5C000900090009000900090009AC
S315000028A0A067E016000900090009000900090009EF
S315000028B0A05FE007000900090009000900090009F6
S315000028C0A057E006000900090009000900090009EF
S315000028D0A04FE005000900090009000900090009E8
S315000028E0A047E004000900090009000900090009E1
S315000028F0E10F682378F13816893AC702018C012363
S31500002900000900091E6E6E6E6E6E6E6E2E6E6E6E17
S315000029103E6E4E5E00090009000900090009000923
S31500002920A027E017000900090009000900090009AD
S31500002930A01FE003000900090009000900090009B9
S31500002940A017E002000900090009000900090009B2
S31500002950A00FE001000900090009000900090009AB
S31500002960A007E000000900090009000900090009A4
S3150000297090096FE34F266EF66DF66CF66BF66AF607
S3150000298069F6000B68F600FF000900090009000956
S315000029902FE6644CE20032438D0C6EF3970D3277CE
S315000029A08904D3066130720132778BFB72013243A0
S315000029B08FF632776FE3000B6EF62710ABCD000073
S315000029C0E000001944243054442430544424305444
S315000029D04424305444243054442430544424305441
S315000029E04424305444243054442430544424305431
S315000029F04424305444243054442430544424305421
S31500002A004424305444243054442430544424305410
S31500002A104424305444243054442430544424305400
S31500002A2044243054442430544424305444243054F0
S31500002A3044243054442430544424305444243054E0
S31500002A40442430544424000B604300006043306C3F
S31500002A503548E10B361275FF8B396353330C43014E
S31500002A6067438902025C73FF2024C80175FF77085B
S31500002A708B1DC802890273FF015D20154301890E73
S31500002A80015D6119770475FC025E212D20163072F6
S31500002A90015E221D202689F7A0197505000975FE1D
S31500002AA0015E3072201689FBA011750300094301EF
S31500002AB08903015D20144119201475FE025E3072EF
S31500002AC02024421920254229202489F77503304005
S31500002AD089047401025C304020248BFB000B000942
S31500002AE043616C63756C6174696E672E2E2E2E2E93
S31500002AF00000000043616C63756C6174696E672049
S31500002B00444F4E4500000000436F6E7374616E744F
S31500002B10205069203D20332E00000000CCCCCCCDC7
S70500002000DA
/tags/add/application/shc_pi/main.map
0,0 → 1,101
Archive member included because of file (symbol)
 
/usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a(_udivsi3.o)
main.o (__udivsi3)
/usr/local/sh-elf/lib/libc.a(memcpy.o)
main.o (memcpy)
 
Allocating common symbols
Common symbol size file
 
T1 0x204 main.o
T2 0x204 main.o
PI 0x204 main.o
T3 0x204 main.o
 
Memory Configuration
 
Name Origin Length Attributes
ram 0x0000000000002000 0x0000000000001e00
stack 0x0000000000003e00 0x0000000000000200
*default* 0x0000000000000000 0xffffffffffffffff
 
Linker script and memory map
 
LOAD crt0.o
LOAD main.o
LOAD /usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a
LOAD /usr/local/sh-elf/lib/libc.a
LOAD /usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a
 
.text 0x0000000000002000 0xae0
*(.text)
.text 0x0000000000002000 0x30 crt0.o
.text 0x0000000000002030 0x990 main.o
0x0000000000002580 lcd_init
0x0000000000002450 lcd_pos
0x0000000000002220 longdiv
0x0000000000002350 disp_oct4
0x0000000000002990 waitNms
0x0000000000002610 key_wait_on
0x0000000000002030 main_sh
0x0000000000002490 lcd_ready
0x0000000000002520 lcd_wr
0x0000000000002080 calc_pi
0x0000000000002170 longadd
0x00000000000024c0 lcd_rd
0x0000000000002290 disp_pi
0x00000000000021c0 longsub
0x00000000000026b0 key_scan
0x0000000000002660 key_wait_off
0x0000000000002420 lcd_disp
0x00000000000023e0 lcd_message
.text 0x00000000000029c0 0x8a /usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a(_udivsi3.o)
0x00000000000029c0 __udivsi3
*fill* 0x0000000000002a4a 0xa04077000000002 00
.text 0x0000000000002a4c 0x94 /usr/local/sh-elf/lib/libc.a(memcpy.o)
0x0000000000002a4c memcpy
*(.strings)
0x0000000000002ae0 _etext = .
 
.tors 0x0000000000002ae0 0x0
0x0000000000002ae0 ___ctors = .
*(.ctors)
0x0000000000002ae0 ___ctors_end = .
0x0000000000002ae0 ___dtors = .
*(.dtors)
0x0000000000002ae0 ___dtors_end = .
 
.rodata 0x0000000000002ae0 0x40
*(.rodata)
.rodata 0x0000000000002ae0 0x40 main.o
 
.rela.dyn
0x0000000000002b20 __idata_start = (((ADDR (.text) + SIZEOF (.text)) + SIZEOF (.tors)) + SIZEOF (.rodata))
 
.data 0x0000000000002b20 0x0 load address 0x0000000000002b20
0x0000000000002b20 __idata_start = .
0x0000000000002b20 _sdata = .
*(.data)
0x0000000000002b20 _edata = .
0x0000000000002b20 __idata_end = (__idata_start + SIZEOF (.data))
 
.bss 0x0000000000002b20 0x810
0x0000000000002b20 _bss_start = .
*(.bss)
*(COMMON)
COMMON 0x0000000000002b20 0x810 main.o
0x0 (size before relaxing)
0x0000000000002b20 T1
0x0000000000002d24 T2
0x0000000000002f28 PI
0x000000000000312c T3
0x0000000000003330 _end = .
 
.stack 0x0000000000003e00 0x0
0x0000000000003e00 _stack = .
*(.stack)
OUTPUT(main.elf elf32-sh)
 
.comment 0x0000000000000000 0x26
.comment 0x0000000000000000 0x26 main.o
/tags/add/application/shc_pi/startup/sh.x
0,0 → 1,56
/**************************************
SuperH (SH-2) C Compiler Linker Script
**************************************/
 
OUTPUT_FORMAT("elf32-sh")
OUTPUT_ARCH(sh)
 
MEMORY
{
ram : o = 0x00002000, l = 0x1e00
stack : o = 0x00003e00, l = 0x0200
}
 
SECTIONS
{
.text : {
*(.text)
*(.strings)
_etext = . ;
} > ram
 
.tors : {
___ctors = . ;
*(.ctors)
___ctors_end = . ;
___dtors = . ;
*(.dtors)
___dtors_end = . ;
} > ram
 
.rodata : {
*(.rodata)
} >ram
 
__idata_start = ADDR(.text) + SIZEOF(.text) + SIZEOF(.tors) + SIZEOF(.rodata);
.data : AT(__idata_start) {
__idata_start = .;
_sdata = . ;
*(.data)
_edata = . ;
} > ram
__idata_end = __idata_start + SIZEOF(.data);
 
.bss : {
_bss_start = .;
*(.bss)
*(COMMON)
_end = .;
} >ram
 
.stack :
{
_stack = .;
*(.stack)
} > stack
}
/tags/add/application/shc_pi/startup/crt0.S
0,0 → 1,59
/****************************************
SuperH (SH-2) C compiler Startup Routine
----------------------------------------
Rev1. March 21, 2003 by Thorn Aitch
****************************************/
 
/********************
Section: .text (ROM)
********************/
.section .text
 
/************
Vector Table
************/
_vector_top:
.long _start ! #000
.long _stack+0x200 ! #001
 
/************
Main Routine
************/
_start:
mov.l _pmain_sh, r8
jsr @r8
mov #0, r14
 
_endless:
bra _endless
nop
 
.align 4
_pmain_sh : .long _main_sh
 
/**********************
Section: .rodata (ROM)
**********************/
.section .rodata
.align 4
 
/********************
Section: .data (RAM)
********************/
.section .data
.align 4
 
/*******************
Section: .bss (RAM)
*******************/
.section .bss
.align 4
 
/*********************
Section: .stack (RAM)
*********************/
.section .stack
.align 4
_stack:
.end
 
/tags/add/application/shc_pi/dump
0,0 → 1,4
#!/bin/bash
 
sh-elf-objdump -D -msh2 $1 | less
 
tags/add/application/shc_pi/dump Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: tags/add/application/shc_pi/main.c =================================================================== --- tags/add/application/shc_pi/main.c (nonexistent) +++ tags/add/application/shc_pi/main.c (revision 7) @@ -0,0 +1,736 @@ +//=============================== +// Calculate Circular Constant Pi +// (1024 figures) +//------------------------------- +// for VirtexE Evaluation Board +// July.20 2003 Ver.1 +//=============================== + +//====================================================== +// Address Map +//====================================================== +// address sz wt wd device +// 00000000-00001FFF 8K 0 32 ROM (code) +// 00002000-00003DFF 6K 0 32 RAM (data) +// 00003E00-00003FFF 512 0 32 RAM (stack) +// +// 00000000-0000FFFF 64K 0 32 RAM (shadow every 16KB) +// 00010000-0001FFFF 64K 3 32 RAM (shadow every 16KB) +// 00020000-0002FFFF 64K 0 16 RAM (shadow every 16KB) +// 00030000-0003FFFF 64K 3 16 RAM (shadow every 16KB) +// 00040000-ABCCFFFF (shadow RAM) +// ABCD0000-ABCD00FF 256 3 32 PIO (shadow every 4B) +// ABCD0100-ABCD01FF 256 3 32 UART(shadow every 4B) +// ABCD0200-ABCD02FF 256 3 32 SYS (shadow every 8B) +// ABCD0300-FFFBFFFF (shadow RAM) +// FFFC0000-FFFCFFFF 64K 0 32 RAM (shadow every 16KB) +// FFFD0000-FFFDFFFF 64K 3 32 RAM (shadow every 16KB) +// FFFE0000-FFFEFFFF 64K 0 16 RAM (shadow every 16KB) +// FFFF0000-FFFFFFFF 64K 3 16 RAM (shadow every 16KB) +// +//====================================================== +// PORT OUTPUT +//====================================================== +// ABCD0000 : reserved +// 31 30 29 28 27 26 25 24 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | | | | | | | | | +// -----------------------------------------------; +// +// ABCD0001 : KEYYO (Key SCAN Y-axis out) +// 23 22 21 20 19 18 17 16 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | | | | KY4 | KY3 | KY2 | KY1 | KY0 | +// ----------------------------------------------- +// +// ABCD0002 : LCDCON (LCD Control Signal) +// 15 14 13 12 11 10 9 8 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | | | | | | E | R/W | RS | +// ----------------------------------------------- +// +// ABCD0003 : LCDOUT (Write Data to LCD) +// 7 6 5 4 3 2 1 0 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | DW7 | DW6 | DW5 | DW4 | DW3 | DW2 | DW1 | DW0 | +// ----------------------------------------------- +// +//====================================================== +// PORT INPUT +//====================================================== +// ABCD0000 : reserved +// 31 30 29 28 27 26 25 24 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | | | | | | | | | +// -----------------------------------------------; +// +// ABCD0001 : KEYXI (Key SCAN X-axis in) +// 23 22 21 20 19 18 17 16 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | | | | KX4 | KX3 | KX2 | KX1 | KX0 | +// ----------------------------------------------- +// +// ABCD0002 : reserved +// 15 14 13 12 11 10 9 8 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | | | | | | | | | +// ----------------------------------------------- +// +// ABCD0003 : LCDIN (Read Data from LCD) +// 7 6 5 4 3 2 1 0 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | DR7 | DR6 | DR5 | DR4 | DR3 | DR2 | DR1 | DR0 | +// ----------------------------------------------- +// +//====================================================== +// UART: SASC (www.opencores.com) +// Simple Asynchronous Serial Communication Device +//====================================================== +// ABCD0100 : UARTBG0 Baud Rate Generator Div0 (R/W) +// 31 30 29 28 27 26 25 24 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | B07 | B06 | B05 | B04 | B03 | B02 | B01 | B00 | +// ----------------------------------------------- +// +// ABCD0101 : UARTBG1 Baud Rate Generator Div1 (R/W) +// 23 22 21 20 19 18 17 16 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | B17 | B16 | B15 | B14 | B13 | B12 | B11 | B10 | +// ----------------------------------------------- +// +// ABCD0102 : UARTCON (TXF=full_o, RXE=empty_o) (R only) +// 15 14 13 12 11 10 9 8 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | | | | | | | TXF | RXE | +// ----------------------------------------------- +// +// ABCD0103 : UARTTXD(W only)/UARTRXD(R only) +// 7 6 5 4 3 2 1 0 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | TR7 | TR6 | TR5 | TR4 | TR3 | TR2 | TR1 | TR0 | +// ----------------------------------------------- +// +//====================================================== +// System Controller +// Interrupt and Exception Controller +//====================================================== +// ABCD0200 : INTCTL Interrupt Control (32bit R/W only) +// 31 30 29 28 27 26 25 24 +// ----------------------------------------------- +// |E_NMI|E_IRQ|E_CER|E_DER|E_MRS| |TMRON|BRKON| +// ----------------------------------------------- +// 23 22 21 20 19 18 17 16 +// ----------------------------------------------- +// |ILVL3|ILVL2|ILVL1|ILVL0|IVEC7|IVEC6|IVEC5|IVEC4| +// ----------------------------------------------- +// 15 14 13 12 11 10 9 8 +// ----------------------------------------------- +// |IVEC3|IVEC2|IVEC1|IVEC0|TMR11|TMR10|TMR09|TMR08| +// ----------------------------------------------- +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// |TMR07|TMR06|TMR05|TMR04|TMR03|TMR02|TMR01|TMR00| +// ----------------------------------------------- +// bit31: E_NMI Emulate NMI Interrupt (W only) +// bit30: E_IRQ Emulate IRQ Interrupt (W only) +// bit29: E_CER Emulate CPU Address Error (W only) +// bit28: E_DER Emulate DMA Address Error (W only) +// bit27: E_MRS Emulate Manual Reset (W only) +// bit26: reserved +// bit25: TMRON INTTMR OFF/ON (0:OFF, 1:ON) +// bit24: BRKON Address Break(NMI) OFF/ON (0:OFF, 1:ON) +// bit23: ILVL3 IRQ ILevel 3 +// bit22: ILVL2 IRQ ILevel 2 +// bit21: ILVL1 IRQ ILevel 1 +// bit20: ILVL0 IRQ ILevel 0 +// bit19: IVEC7 IRQ Vector 7 +// bit18: IVEC6 IRQ Vector 6 +// bit17: IVEC5 IRQ Vector 5 +// bit16: IVEC4 IRQ Vector 4 +// bit15: IVEC3 IRQ Vector 3 +// bit14: IVEC2 IRQ Vector 2 +// bit13: IVEC1 IRQ Vector 1 +// bit12: IVEC0 IRQ Vector 0 +// bit11: TMR11 (12 bit interval timer to generate IRQ) +// ... +// bit 0: TMR00 (12 bit interval timer to generate IRQ) +// +// ABCD0204 : BRKADR Break Address (16bit R/W only) +// 15 14 13 12 11 10 9 8 +// ----------------------------------------------- +// |ADR15|ADR14|ADR13|ADR12|ADR11|ADR10|ADR09|ADR08| +// ----------------------------------------------- +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// |ADR07|ADR06|ADR05|ADR04|ADR03|ADR02|ADR01|ADR00| +// ----------------------------------------------- +// bit15: ADR15 Break Address15 +// ... +// bit00: ADR00 Break Address00 +// + +#include "common.h" +#define MAXFIGURE ((1024/4)+2) // should be (N*8)+2 to display correctly + +//================= +// Define Functions +//================= +void lcd_message(unsigned char pos, unsigned char *pstr); +void lcd_disp(unsigned char chr); +void lcd_pos(unsigned char pos); +void lcd_ready(void); +unsigned char lcd_rd(int); +void lcd_wr(int, unsigned char); +void lcd_init(void); + +void waitNms(unsigned char n); +unsigned char key_scan(); +unsigned char key_wait_on(void); +void key_wait_off(void); + +void longadd(unsigned short *a, unsigned short *b, unsigned short *c); +void longsub(unsigned short *a, unsigned short *b, unsigned short *c); +int longdiv(unsigned short *a, unsigned short b, unsigned short *c); +void calc_pi(void); +void disp_oct4(unsigned short x); +void disp_pi(void); + +//----------------------------------- +// Work data for Circular Constant Pi +//----------------------------------- +unsigned short PI[MAXFIGURE]; +unsigned short T1[MAXFIGURE]; +unsigned short T2[MAXFIGURE]; +unsigned short T3[MAXFIGURE]; + +//============= +// Main Routine +//============= +void main_sh(void) +{ + unsigned char mes[] = "Calculating....."; + + lcd_init(); + lcd_message(0, mes); + calc_pi(); + disp_pi(); +} + +//------------------------------------------------- +// Calculate the Circular Constant Pi +//------------------------------------------------- +// (1) Matin's formula +// PI/4 = 4*arctan(1/5) - arctan(1/239) +// PI = 16*arctan(1/5) - 4*arctan(1/239) +// Here, arctan(1/p) = 1/p - 1/(3*p^3) + 1/(5*p^5) - 1/(7*p^7) + ... +// Then, +// PI = (16*1/5 - 4*1/239) +// - (16*1/3*5^3 - 4*1/3*239^3) +// + (16*1/5*5^5 - 4*1/5*239^5) +// - (16*1/7*5^7 - 4*1/7*239^7) +// +... +// = (1/1)*(16*5/(5*5)^1 - 4*239/(239*239)^1) +// - (1/3)*(16*5/(5*5)^2 - 4*239/(239*239)^2) +// + (1/5)*(16*5/(5*5)^3 - 4*239/(239*239)^3) +// - (1/7)*(16*5/(5*5)^4 - 4*239/(239*239)^4) +// +... +//------------------------------------------------- +// (2) Define Arrays for Long Figure Number +// Each element has Octal 4 figures. +// PI[] : Value to be converged to Pi +// T1[] : (16* 5)/( 5* 5)^n (n=1...) +// T2[] : ( 4*239)/(239*239)^n (n=1...) +// T3[] : (-1)*(n+1)*(1/(2n-1))*(T1[]-T2[]) +//------------------------------------------------- +// (3) Example +// n TI[0] TI[1] T2[0] T2[1] T3[0] T3[1] PI[0] PI[1] +// 0 0080 0000 0956 0000 0000 0000 0000 0000 +// 1 0003 2000 0000 0167 0003 1833 0003 1833 (+) +// 2 0000 1280 0000 0000 0000 0426 0003 1407 (-) +// 3 0000 0051 0000 0000 0000 0010 0003 1417 (+) +// 4 0000 0002 0000 0000 0000 0000 0003 1417 (-) +//------------------------------------------------- +void calc_pi(void) +{ + int i; + int converged; + //----------- + // Initialize + //----------- + converged = 0; + for (i=0; i<=MAXFIGURE-1; i++) + { + PI[i] = 0; + T1[i] = 0; + T2[i] = 0; + T3[i] = 0; + } + T1[0] = 16*5; + T2[0] = 4*239; + + //----------------------------- + // repeat until being converged + //----------------------------- + i = 1; + while (converged == 0) + { + //------------- + // Make T1 & T2 + //------------- + longdiv(T1, 25, T1); + longdiv(T2, 239, T2); + longdiv(T2, 239, T2); + //-------- + // Make T3 + //-------- + longsub(T1, T2, T3); + converged = longdiv(T3, (unsigned short)(2*i-1), T3); + //if (converged) break; + //----------------- + // Accumulate to PI + //----------------- + if (i%2 != 0) + longadd(PI, T3, PI); + else + longsub(PI, T3, PI); + //------------ + // Increment i + //------------ + i++; + } +} + +//--------- +// Long Add +//--------- +void longadd(unsigned short *a, unsigned short *b, unsigned short *c) +{ + int i; + unsigned short carry; + + carry = 0; + for (i = MAXFIGURE-1; i >= 0; i--) + { + *(c+i) = *(a+i) + *(b+i) + carry; + if (*(c+i) < 10000) + carry = 0; + else + { + carry = 1; + *(c+i) = *(c+i) - 10000; + } + } +} + +//--------- +// Long Sub +//--------- +void longsub(unsigned short *a, unsigned short *b, unsigned short *c) +{ + int i; + unsigned short borrow; + unsigned short temp; + + borrow = 0; + for (i = MAXFIGURE-1; i >= 0; i--) + { + temp = *(b+i) + borrow; + if (*(a+i) >= temp) + { + *(c+i) = *(a+i) - temp; + borrow = 0; + } + else + { + *(c+i) = 10000 + *(a+i) - temp; + borrow = 1; + } + } +} + +//--------- +// Long Div +//--------- +int longdiv(unsigned short *a, unsigned short b, unsigned short *c) +{ + int i; + int conv; + unsigned long al, bl, cl, dvd, rem; + + conv = 1; + rem = 0; + for (i = 0; i <= MAXFIGURE-1; i++) + { + al = (unsigned long) *(a+i); + bl = (unsigned long) b; + cl = (unsigned long) *(c+i); + + dvd = al + rem; + cl = dvd / b; + rem = (dvd - cl * bl) * 10000; + if (cl > 0) conv = 0; + *(c+i) = (unsigned short) cl; + } + return conv; +} + +//----------- +// Display Pi +//----------- +void disp_pi(void) +{ + unsigned char mes1[] = "Calculating DONE"; + unsigned char mes2[] = "Constant Pi = 3."; + int i, j; + + while(1) + { + lcd_message( 0, mes1); + lcd_message(16, mes2); + key_wait_off(); + key_wait_on(); + // PI[MAXFIGURE-1] has error, so do not display. + for (i = 0; i < (MAXFIGURE - 2) / 8; i++) + { + for (j = 0; j < 8; j++) + { + if (j == 0) lcd_pos(0); + if (j == 4) lcd_pos(16); + disp_oct4(*(PI + i*8 + j + 1)); + } + key_wait_off(); + key_wait_on(); + } + } +} + +//------------------- +// Display Oct 4 digit +//------------------- +void disp_oct4(unsigned short x) +{ + unsigned short d; + + d = x / 1000; + x = x - d * 1000; + lcd_disp((char)(d+0x30)); + d = x / 100; + x = x - d * 100; + lcd_disp((char)(d+0x30)); + d = x / 10; + x = x - d * 10; + lcd_disp((char)(d+0x30)); + lcd_disp((char)(x+0x30)); +} + +//**************************************************** +//* * +//* LCD Utilities * +//* * +//**************************************************** + +//======================================== +// Print a Message from Current Position +//---------------------------------------- +// Input : pstr = message top address +// Outpur : none +//======================================== +void lcd_message(unsigned char pos, unsigned char *pstr) +{ + unsigned char *pmessage; + + lcd_pos(pos); + pmessage = pstr; + while (*pmessage) lcd_disp(*pmessage++); +} + +//========================================== +// Display One Character on Current Position +//------------------------------------------ +// Input : chr = display charcter +// Output : none +//========================================== +void lcd_disp(unsigned char chr) +{ + lcd_ready(); + lcd_wr(DATA, chr); +} + +//================================ +// Set LCD Display Position +//-------------------------------- +// Input : pos = position +// 1st line = 00-15 +// 2nd line = 16-31 +// Ouput : none +//================================ +void lcd_pos(unsigned char pos) +{ + unsigned char phypos; + + phypos = pos % 32; + if (phypos >= 16) + phypos = (phypos - 16) + 64; + phypos = phypos | 0x80; + + lcd_ready(); + lcd_wr(INST, phypos); +} + +//===================== +// Wait until LCD ready +//--------------------- +// Input : none +// Output : none +//===================== +void lcd_ready(void) +{ + while ((lcd_rd(INST) & 0x80) == 0x80); +} + +//================================= +// LCD Read +//--------------------------------- +// Input : rs (0=Instr,1=Data) +// Output : lcd_rd (Read Data) +//================================= +unsigned char lcd_rd(int rs) +{ + int i; + unsigned char dummy; + unsigned char data; + + PORTO.LCDCON.BYTE = 0x02 | (rs & 0x01); + + // wait 60ns = 2cyc@20MHz + dummy = PORTI.RESERVED_0; + dummy = PORTI.RESERVED_0; + + + PORTO.LCDCON.BYTE = 0x06 | (rs & 0x01); + + // wait 500ns = 10cyc@20MHz + for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0; + + data = PORTI.LCDIN; + + PORTO.LCDCON.BYTE = 0x02 | (rs & 0x01); + + // wait 500ns = 10cyc@20MHz + for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0; + + return(data); +} + +//================================= +// LCD Write +//--------------------------------- +// Input : rs (0=Instr,1=Data) +// wd (Write Data) +// Output : none +//================================= +void lcd_wr(int rs, unsigned char wd) +{ + int i; + unsigned char dummy; + + PORTO.LCDOUT = wd; + + PORTO.LCDCON.BYTE = 0x00 | (rs & 0x01); + + // wait 60ns = 2cyc@20MHz + dummy = PORTI.RESERVED_0; + dummy = PORTI.RESERVED_0; + + PORTO.LCDCON.BYTE = 0x04 | (rs & 0x01); + + // wait 500ns = 10cyc@20MHz + for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0; + + PORTO.LCDCON.BYTE = 0x00 | (rs & 0x01); + + // wait 500ns = 10cyc@20MHz + for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0; +} + +//================== +// LCD Initialize +//------------------ +// Input : none +// Output : none +//================== +void lcd_init(void) +{ + int i; + unsigned char dummy; + + lcd_wr(INST, 0x30); + + // wait 4100us=82000cyc@20MHz + for (i = 0 ; i < 82000 ; i++) dummy = PORTI.RESERVED_0; + + lcd_wr(INST, 0x30); + + // wait 100us=2000cyc@20MHz + for (i = 0 ; i < 2000 ; i++) dummy = PORTI.RESERVED_0; + + lcd_wr(INST, 0x30); + + // set function (8bit, 2lines) + lcd_ready(); + lcd_wr(INST, 0x38); + + // display (disp on, cursor off, blink off) + lcd_ready(); + lcd_wr(INST, 0x0c); + + // clear + lcd_ready(); + lcd_wr(INST, 0x01); + + // entry mode (increment, no-shift) + lcd_ready(); + lcd_wr(INST, 0x06); +} + +//**************************************************** +//* * +//* Key Utilities * +//* * +//**************************************************** + +//=================================== +// Wait until Key On +//----------------------------------- +// Input : none +// Output : key = pushed key code +//=================================== +unsigned char key_wait_on(void) +{ + unsigned char key; + + while((key = key_scan()) == KEYNONE) waitNms(8); + + return(key); +} + +//=================== +// Wait until Key Off +//------------------- +// Input : none +// Output : none +//=================== +void key_wait_off(void) +{ + while(key_scan() != KEYNONE) waitNms(8); +} + +//=================================== +// Key Scan +//----------------------------------- +// Input : none +// Output : key = pushed key code +//=================================== +unsigned char key_scan() +{ + unsigned char keyx4; + unsigned char keyx3; + unsigned char keyx2; + unsigned char keyx1; + unsigned char keyx0; + + PORTO.KEYYO.BYTE = 0xef; // KEYY4 + waitNms(1); + keyx4 = PORTI.KEYXI.BYTE & 0x1f; + + PORTO.KEYYO.BYTE = 0xf7; // KEYY3 + waitNms(1); + keyx3 = PORTI.KEYXI.BYTE & 0x1f; + + PORTO.KEYYO.BYTE = 0xfb; // KEYY2 + waitNms(1); + keyx2 = PORTI.KEYXI.BYTE & 0x1f; + + PORTO.KEYYO.BYTE = 0xfd; // KEYY1 + waitNms(1); + keyx1 = PORTI.KEYXI.BYTE & 0x1f; + + PORTO.KEYYO.BYTE = 0xfe; // KEYY0 + waitNms(1); + keyx0 = PORTI.KEYXI.BYTE & 0x1f; + + switch(keyx4) + { + case 0x17 : return(KEYPUT); + case 0x1b : return(KEYGET); + case 0x1d : return(KEYRUN); + case 0x1e : return(KEYUTL); + } + switch(keyx3) + { + case 0x0f : return(KEYADR); + case 0x17 : return(KEYF); + case 0x1b : return(KEYE); + case 0x1d : return(KEYD); + case 0x1e : return(KEYC); + } + switch(keyx2) + { + case 0x0f : return(KEYINC); + case 0x17 : return(KEYB); + case 0x1b : return(KEYA); + case 0x1d : return(KEY9); + case 0x1e : return(KEY8); + } + switch(keyx1) + { + case 0x0f : return(KEYDEC); + case 0x17 : return(KEY7); + case 0x1b : return(KEY6); + case 0x1d : return(KEY5); + case 0x1e : return(KEY4); + } + switch(keyx0) + { + case 0x0f : return(KEYDAT); + case 0x17 : return(KEY3); + case 0x1b : return(KEY2); + case 0x1d : return(KEY1); + case 0x1e : return(KEY0); + } + return(KEYNONE); +} + +//================== +// Wait n ms +//------------------ +// Input : n ms +// Output : none +//================== +void waitNms(unsigned char n) +{ + int i, j; + unsigned char dummy; + + for (i = 0 ; i < n ; i++) + { + // 1ms = 20000 * 50ns (20MHz) + for (j = 0 ; i <= 10000 ; i++) dummy = PORTI.RESERVED_0; + } +} + +//=============== +// End of Program +//=============== Index: tags/add/application/shc_pi/main.elf =================================================================== --- tags/add/application/shc_pi/main.elf (nonexistent) +++ tags/add/application/shc_pi/main.elf (revision 7) @@ -0,0 +1,26 @@ +ELF* 4 4 (  0 @H 0 /O"n  A d A +A e A A ~oO& n **L%# "///////O"nV,,-- `0y9'&P"%C"(5!$j#"d L fӘ6deL fdeL fdeA fe5ue]dL f!! hdcA ey + +A dcy(doO&nmlkji h/(+ -$1," !!p ///n`3 0<M]1,bs2%a-1a#1sC`3oni h' //n!!`s 0|]1,bMa=1"a31( + `s0|2M1(wG`son h ///////O"njCicf]""`s0|a1,dM eccg1(#8`s0|w7 5`oO&nmlkji h')///////O"n!!dI fdtI f M eeM uL A jJJ(`K `aK a1`0A dMx8(L y +A 9 **L+#&`$P&/*#P///O"nhCh8 +D D D dM/$8ht0I dL8 +D DD dMd$8ht0I dLa8 +D DdM +$8ht0I dLx0hI doO&ni hbM$ Q+///O"nhS +A dLa! ddL I xd$HdLoO&ni h$P$ //O"nhCA hA eoO&n h $% //O"`C( 8nx0 (A A eoO&n h$% //O"n H ɀ oO&n h$ /neCc#s`S! #a a # + +apr27 +brb f,q`S! + apr27`co n /nfCe\a#q!Pq`c!c b ! + + apr27`c! + apr27o n  ///O"nA 0apr27A 0$ apr27I 0H I 8H I H I H I oO&ni h% @O$ ////O"  n H J 0oO&nji h&) ////O"  n H J 0oO&nji h&) ///////O"n(I `- (I `, (I `+ (I `* (I `hx8-" # )RRR"R2B    hx8;# nnnnnnn.nnn>nN^    + hx8;# lllllll,lllnN^ '     oO&nmlkji h /dL2C n +2wa0r2wr2C2wo n'D$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$0TD$ `C`C0l5H 6u9cS3 CgC\s $uws] C]awu^!- 0r^" &u u^0r u C] A u^0r $B %B) $u0@t\0@ $ Calculating.....Calculating DONEConstant Pi = 3.GCC: (GNU) 2.95.3 20010315 (release).symtab.strtab.shstrtab.text.tors.rodata.data.bss.stack.comment +!* '* `@/+ 5+ :> A & J + +( ? **+ + >  +  %>, 6 ?EL 0?[e)m*v*$*F?**j**|********?+ % $P<*" p$+ 0-$4+ ?+ F#PQ)0Z&Dg 0Pp*Lx$$*% X !pJ$\/(1,"**+ 30!R)&+ %> +&`D*($ ,2#@./startup/crt0.S_vector_top_start_stack_pmain_sh_endless*ABS*main.cgcc2_compiled.libgcc1.SlongwayshortwayvshortwayretL_smallL_evenL_odddstL_al4dstL_al4bothL_2l_loopL_cleanupL_al4both_loopL_al4srcL_odd_loopL_readyL_cleanup_loop_T1_lcd_init_lcd_pos_etext_longdiv__idata_end_T2_bss_start_sdata_disp_oct4_waitNms_key_wait_on_main_sh_memcpy_lcd_ready___dtors_lcd_wr_calc_pi_longadd_lcd_rd_PI_T3_disp_pi___ctors_end___ctors_edata_end_longsub___udivsi3_key_scan__idata_start_key_wait_off___dtors_end_lcd_disp_lcd_message \ No newline at end of file Index: tags/add/application/shc_pi/readme.txt =================================================================== --- tags/add/application/shc_pi/readme.txt (nonexistent) +++ tags/add/application/shc_pi/readme.txt (revision 7) @@ -0,0 +1,145 @@ +//=============================== +// Calculate Circular Constant Pi +// (1024 figures) +//------------------------------- +// for VirtexE Evaluation Board +// July.20 2003 Ver.1 +//=============================== + +1. Introduction +--------------------------- +This is a program for calculating the Circular Constant (Pi). +This source program can make 1024 figures after the decimal fraction. +If you have large memory space, you can expand figures +to be calculated only by changing the definition of MAXFIGURE. +This program is also a good verification of Aquarius quality. + +2. Algorithm +--------------------------- +This program uses the basic Matin's formula. + PI/4 = 4*arctan(1/5) - arctan(1/239) + arctan(1/p) = 1/p - 1/(3*p^3) + 1/(5*p^5) - 1/(7*p^7) + ... + +3. How to compile +--------------------------- +Simply make it. + $ make clean + $ make +Then, it creates a program for the FPGA System +which is described in Aquarius document. + +4. Performace +--------------------------- +To calculate 1024 figures, +it approximately takes 4.5sec@20MHz. +(Aquarius don't have RTC yet, +so accurate speed can not be measured.) + +5. Result +--------------------------- +Load the s-format object by the Aquarius monitor, +and run it from the address 0x00002008. +This program displays the result on LCD display +on the Aquarius FPGA System, like as follows. +Hit any key to page. +================ +Constant Pi = 3. + +1415926535897932 +3846264338327950 + +2884197169399375 +1058209749445923 + +0781640628620899 +8628034825342117 + +0679821480865132 +8230664709384460 + +9550582231725359 +4081284811174502 + +8410270193852110 +5559644622948954 + +9303819644288109 +7566593344612847 + +5648233786783165 +2712019091456485 + +6692346034861045 +4326648213393607 + +2602491412737245 +8700660631558817 + +4881520920962829 +2540917153643678 + +9259036001133053 +0548820466521384 + +1469519415116094 +3305727036575959 + +1953092186117381 +9326117931051185 + +4807446237996274 +9567351885752724 + +8912279381830119 +4912983367336244 + +0656643086021394 +9463952247371907 + +0217986094370277 +0539217176293176 + +7523846748184676 +6940513200056812 + +7145263560827785 +7713427577896091 + +7363717872146844 +0901224953430146 + +5495853710507922 +7968925892354201 + +9956112129021960 +8640344181598136 + +2977477130996051 +8707211349999998 + +3729780499510597 +3173281609631859 + +5024459455346908 +3026425223082533 + +4468503526193118 +8171010003137838 + +7528865875332083 +8142061717766914 + +7303598253490428 +7554687311595628 + +6388235378759375 +1957781857780532 + +1712268066130019 +2787661119590921 + +6420198938095257 +2010654858632788 +================ + +End of document. \ No newline at end of file Index: tags/add/application/shc_pi/Makefile =================================================================== --- tags/add/application/shc_pi/Makefile (nonexistent) +++ tags/add/application/shc_pi/Makefile (revision 7) @@ -0,0 +1,75 @@ +#======================================== +# SuperH (SH-2) C Compiler Makefile +#---------------------------------------- +# Rev.1 March 21, 2003 by Thorn Aitch +#======================================== + +#------------- +# Command Path +#------------- +CMD_PATH = /usr/local/bin +CC = $(CMD_PATH)/sh-elf-gcc +OBJCOPY = $(CMD_PATH)/sh-elf-objcopy +SIZE = $(CMD_PATH)/sh-elf-size + +#------------- +# Output Files +#------------- +TARGET = main.srec +TARGET_ELF = main.elf +MAP_FILE = $(TARGET_ELF:.elf=.map) + +OUTPUT_FORMAT = srec --srec-forceS3 + +#------------------------- +# Compile and Link Options +#------------------------- +INCLUDES = -I./include +CFLAGS = -m2 -O1 $(INCLUDES) -Wall + +LDSCRIPT = startup/sh.x + +LDFLAGS = -m2 -T $(LDSCRIPT) -O3 -nostartfiles -Wl,-Map,$(MAP_FILE) + +#------------ +# Input Files +#------------ +STARTUP = crt0.S +LIBS = +SRCS = main.c +OBJS = $(STARTUP:.S=.o) $(LIBS:.c=.o) $(SRCS:.c=.o) + +#--------------- +# Make Operation +#--------------- +$(TARGET) : $(TARGET_ELF) + $(OBJCOPY) -v -O $(OUTPUT_FORMAT) $(TARGET_ELF) $(TARGET) + +$(TARGET_ELF) : $(OBJS) + $(CC) $(LDFLAGS) $(OBJS) -o $(TARGET_ELF) + $(SIZE) -Ax $(TARGET_ELF) + +$(OBJS) : Makefile + +clean : + rm -f *.o $(TARGET) $(TARGET_ELF) $(MAP_FILE) + +%.o : %.c + $(CC) -c $(CFLAGS) $< + +%.o : %.S + $(CC) -c $(CFLAGS) $< + +%.o : %.s + $(CC) -c $(CFLAGS) $< + +#------------------- +# Header and Startup +#------------------- +vpath %.h ./include +vpath %.S ./startup + +#------------------ +# Source and Object +#------------------ +main.o : main.c Index: tags/add/application/shc_pi/common.h =================================================================== --- tags/add/application/shc_pi/common.h (nonexistent) +++ tags/add/application/shc_pi/common.h (revision 7) @@ -0,0 +1,131 @@ +//=============================== +// C Source Header +//------------------------------- +// for VirtexE Evaluation Board +// Apr.19 2003 Ver.1 +//=============================== + +//-------------------------- +// Peripheral I/O definition +//-------------------------- +struct st_porto +{ + unsigned char RESERVED_0; + union + { + unsigned char BYTE; + struct + { + unsigned char :3; + unsigned char KY4:1; + unsigned char KY3:1; + unsigned char KY2:1; + unsigned char KY1:1; + unsigned char KY0:1; + } BIT; + } KEYYO; + union + { + unsigned char BYTE; + struct + { + unsigned char :5; + unsigned char E :1; + unsigned char RW:1; + unsigned char RS:1; + } BIT; + } LCDCON; + unsigned char LCDOUT; +}; + +struct st_porti +{ + unsigned char RESERVED_0; + union + { + unsigned char BYTE; + struct + { + unsigned char :3; + unsigned char KX4:1; + unsigned char KX3:1; + unsigned char KX2:1; + unsigned char KX1:1; + unsigned char KX0:1; + } BIT; + } KEYXI; + unsigned char RESERVED_2; + unsigned char LCDIN; +}; + +struct st_uart +{ + unsigned char UARTBG0; + unsigned char UARTBG1; + union + { + unsigned char BYTE; + struct + { + unsigned char :6; + unsigned char TXF:1; + unsigned char RXE:1; + } BIT; + } UARTCON; + union + { + unsigned char TX; + unsigned char RX; + } BYTE; +}; + +struct st_sys +{ + unsigned long INTCTL; + unsigned short BRKADR; +}; + + +#define PORTO (*(volatile struct st_porto *)0xabcd0000) +#define PORTI (*(volatile struct st_porti *)0xabcd0000) +#define UART (*(volatile struct st_uart *)0xabcd0100) +#define SYS (*(volatile struct st_sys *)0xabcd0200) + +//----------- +// LCD Access +//----------- +#define INST 0 +#define DATA 1 + +//--------- +// Key Code +//--------- +#define KEY0 0 +#define KEY1 1 +#define KEY2 2 +#define KEY3 3 +#define KEY4 4 +#define KEY5 5 +#define KEY6 6 +#define KEY7 7 +#define KEY8 8 +#define KEY9 9 +#define KEYA 10 +#define KEYB 11 +#define KEYC 12 +#define KEYD 13 +#define KEYE 14 +#define KEYF 15 +#define KEYUTL 16 +#define KEYRUN 17 +#define KEYGET 18 +#define KEYPUT 19 +#define KEYADR 20 +#define KEYINC 21 +#define KEYDEC 22 +#define KEYDAT 23 +#define KEYNONE 255 + + + +

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.