Forum: FPGA, VHDL & Co. Lattice MachXO Control Developer KIT Menue asm File


von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo !
dem menue.hex habe ich schon modifiziert.
Das ist im *.jed File mit drin.
------------------------------------------------------------------------ 
--

Ich mache da was mit dem MachXO Wishbone interface.
Kopplung:
Lesen mit UART, via WBONE[INTERFACE] lesen @TIMER-ticks
------------------------------------------------------------------------ 
--
PC V24-> -- WBONE MCU <--> Embed(UART#0 --->Timer#1)
------------------------------------------------------------------------ 
--
Ich suche den asm File für das Lattice MachXO Control Developer KIT.
Dieser asm File erzeugt den "prom_init.hex".
Besonders die IRQ Routine ist nicht so einfach . ??? in der Doku. drin.
######################################################################## 
#
Frage:
Hat einer ein prom_init.asm, bzw. prom_init.s schon mal mit der 
dev.Chain
für den Mico8 übersetz.
######################################################################## 
#
Die asm.files für das neue MachXO2 Board passen nicht so gut.
Da ist der Wisbone UART  nicht auf Addesse 0
   Vom IRQ Handling ? ist nix dabei.
UART 'IRQ


######################################################################## 
#
Wishbone Prozess-Interface habe ich am laufen.

Halt nur mit dem gelieferten prom_init.hex.

Aber ich will das eigene prom_init.hex. machen.

Anhang zip ist der Code dump vom Orginal prom_init.hex
Gruss Holger.

von troll (Gast)


Lesenswert?


von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

http://pbuchegger.at
Für die Tools  via asm + Mico8
 als Batchlorarbeit
################################################
 Embed Mico8 MachX0 LCMXO2280C
################################################

 dat_o_reg4 ist an WBone via Case und flags gekoppelt

<= shaddow_seconds_reg; /* Freeze */
<= minutes_reg;
<= hours_reg;
1
 
2
always@(posedge clk_ii or posedge rst_i) begin
3
    if (rst_i) begin
4
      dat_o_reg4 <= 0;
5
    end
6
    else begin /* strobe */
7
      if (!wb_we_i && wb_stb_i && wb_cyc_i ) begin //wb_we_Low $00_/WRITE  R0 ! 
8
        case ( wb_adr_i ) // via Reg: $02 R4 !, $01 R4 ! , $00 FU-WBONE_ADDR OK? 
9
          'h0: dat_o_reg4 <= shaddow_seconds_reg; /* Freeze */
10
          'h1: dat_o_reg4 <= minutes_reg;
11
          'h2: dat_o_reg4 <= hours_reg;
12
          default: dat_o_reg4 <= shaddow_seconds_reg;
13
        endcase
14
      end
15
    end
16
  end
#################################################
co.asm ist für die neue Lattice MachXO2
Gruss Holger.

von troll (Gast)


Lesenswert?

Egal was du nimmst, nimm weniger davon...

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

;UART REGISTERS
.equ REG_UART_DATA,  0x00
.equ REG_UART_IER,   0x01 ; 0001
.equ REG_UART_LCR,   0x03 ; 0011
.equ REG_UART_LSR,   0x05 ; 1001

.equ U_LSR_MSK,   0x02 ; 0000:0011
.equ UART,           0x00 ; 0000 0000 0000 0000 [0000 0000] - 0000 1111 
1111 1111 [1111 1111] (0x000000-0x0FFFFF)
.equ TIMER,          0x01 ; 1011 0000 0000 0000 [0000 0000] - 1011 1111 
1111 1111 [1111 1111] (0xB00000-0xBFFFFF)
.equ EBR,            0xE0 ; 1110 0000 0000 0000 [0000 0000] - 1110 1111 
1111 1111 [1111 1111] (0xE00000-0xEFFFFF)
; To do: include util.inc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;; *** Utility Functions *** ;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
small_delay:
  movi r1, 0x00
  movi r2, 0x00
  delay_loop:
    addi r1, 0x01
    addic r2, 0x00
    cmpi r2, 0x01
    bnz delay_loop
  ret

delay:
  movi r1, 0x00
  movi r2, 0x00
  movi r3, 0x00
  dly_loop:
    addi r1,0x01
    addic r2, 0x00
    addic r3, 0x00
    cmpi r3, 0x20
    bnz dly_loop
  ret

sel_uart:    ; ( -- )
  movi r15, UART  ; store  r15 UART !
  ret

sel_uart_with_r0_zero:  ; ( -- )
  call sel_uart
  movi  r0, 0x00  ; IER###
ret

; #########################
init_uart:     ; ( -- )
  call sel_uart_with_r0zero    ;
  export r0, REG_UART_IER ; !$0 TO UART-IRQ_EN_REG
  movi   r0, 0x03         ;  0000:0011 r0=$#03#
  export r0, REG_UART_LCR ;
  ret
; #########################

; #########################
wait_for_uart_txrdy: ; ( -- )
  call sel_uart
  uart_txrdy_loop:
  import r1, REG_UART_LSR
  andi r1, U_LSR_MSK   ; $20 --0010:0000 Mask out all but THR Empty 
status bit
  cmpi r1, U_LSR_MSK   ;
  bnz uart_txrdy_loop  ;
  ret
; ###########################

; #########################
send_uart_data: ; ( via r9 -- )
  call sel_uart
  call wait_for_uart_txrdy
  export r9, REG_UART_DATA
 return
; ###########################
  ; retruss Holger.
;================
; ROUTINES
; the user input (a character from the hyperterminal)
; is matched to a function
get_char:
  call sel_uart ;
   import r5, REG_UART_DATA ; Read from UART
  cmpi r5, 'm'
  bz init_menu
  cmpi r5, 't'
  callz read_uptime

waiting_for_input:
  movi r15,UART
  import r0, REG_UART_LSR
  andi r0, 0x01
  cmpi r0, 0x01
  callz get_char
  b waiting_for_input

; ENDE INCLUDE_PRMITIVES INIT UART GET PUT

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.