⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 program.psm

📁 Xilinx的培训教程的源码 virtex
💻 PSM
字号:
;================================================================
; Port address definitions...
;================================================================

CONSTANT switch_in        , 00    ; Switch read port
CONSTANT leds_out         , 01    ; LED write port
CONSTANT uart_data_rx     , 02    ; UART receive read port
CONSTANT uart_data_tx     , 03    ; UART transmit write port
CONSTANT data_present     , 04    ; UART stat read port, lsb
CONSTANT buffer_full      , 05    ; UART stat read port, lsb

;================================================================
; Useful constant declarations...
;================================================================

CONSTANT all_clear        , 00    ; define zero

CONSTANT ascii_NUL        , 00    ; ascii code (null character)
CONSTANT ascii_SOH        , 01    ; ascii code (start of header)
CONSTANT ascii_STX        , 02    ; ascii code (start of text)
CONSTANT ascii_ETX        , 03    ; ascii code (end of text)
CONSTANT ascii_EOT        , 04    ; ascii code (end of xmit)
CONSTANT ascii_ENQ        , 05    ; ascii code (enquiry)
CONSTANT ascii_ACK        , 06    ; ascii code (acknowledge)
CONSTANT ascii_BEL        , 07    ; ascii code (bell)
CONSTANT ascii_BS         , 08    ; ascii code (backspace)
CONSTANT ascii_HT         , 09    ; ascii code (horiz tab)
CONSTANT ascii_LF         , 0A    ; ascii code (line feed)
CONSTANT ascii_VT         , 0B    ; ascii code (vert tab)
CONSTANT ascii_FF         , 0C    ; ascii code (form feed)
CONSTANT ascii_CR         , 0D    ; ascii code (carriage return)
CONSTANT ascii_SO         , 0E    ; ascii code (shift out)
CONSTANT ascii_SI         , 0F    ; ascii code (shift in)

CONSTANT ascii_DLE        , 10    ; ascii code (data link esc)
CONSTANT ascii_DC1        , 11    ; ascii code (device ctrl 1, xon)
CONSTANT ascii_DC2        , 12    ; ascii code (device ctrl 2)
CONSTANT ascii_DC3        , 13    ; ascii code (device ctrl 3, xoff)
CONSTANT ascii_DC4        , 14    ; ascii code (device ctrl 4)
CONSTANT ascii_NAK        , 15    ; ascii code (negative acknowledge)
CONSTANT ascii_SYN        , 16    ; ascii code (sync idle)
CONSTANT ascii_ETB        , 17    ; ascii code (end xmit block)
CONSTANT ascii_CAN        , 18    ; ascii code (cancel)
CONSTANT ascii_EM         , 19    ; ascii code (end of medium)
CONSTANT ascii_SUB        , 1A    ; ascii code (substitute)
CONSTANT ascii_ESC        , 1B    ; ascii code (escape)
CONSTANT ascii_FS         , 1C    ; ascii code (file separator)
CONSTANT ascii_GS         , 1D    ; ascii code (group separator)
CONSTANT ascii_RS         , 1E    ; ascii code (record separator)
CONSTANT ascii_US         , 1F    ; ascii code (unit space)

CONSTANT ascii_SPACE      , 20    ; ascii code
CONSTANT ascii_EXCLAIM    , 21    ; ascii code
CONSTANT ascii_DBLQUOT    , 22    ; ascii code
CONSTANT ascii_NUMSIGN    , 23    ; ascii code
CONSTANT ascii_DOLLAR     , 24    ; ascii code
CONSTANT ascii_PERCENT    , 25    ; ascii code
CONSTANT ascii_AMP        , 26    ; ascii code
CONSTANT ascii_SINQUOT    , 27    ; ascii code
CONSTANT ascii_LPAREN     , 28    ; ascii code
CONSTANT ascii_RPAREN     , 29    ; ascii code
CONSTANT ascii_ASTERISK   , 2A    ; ascii code
CONSTANT ascii_PLUS       , 2B    ; ascii code
CONSTANT ascii_COMMA      , 2C    ; ascii code
CONSTANT ascii_MINUS      , 2D    ; ascii code
CONSTANT ascii_PERIOD     , 2E    ; ascii code
CONSTANT ascii_FWDSLASH   , 2F    ; ascii code

CONSTANT ascii_0          , 30    ; ascii code
CONSTANT ascii_1          , 31    ; ascii code
CONSTANT ascii_2          , 32    ; ascii code
CONSTANT ascii_3          , 33    ; ascii code
CONSTANT ascii_4          , 34    ; ascii code
CONSTANT ascii_5          , 35    ; ascii code
CONSTANT ascii_6          , 36    ; ascii code
CONSTANT ascii_7          , 37    ; ascii code
CONSTANT ascii_8          , 38    ; ascii code
CONSTANT ascii_9          , 39    ; ascii code
CONSTANT ascii_COLON      , 3A    ; ascii code
CONSTANT ascii_SEMI       , 3B    ; ascii code
CONSTANT ascii_LESS       , 3C    ; ascii code
CONSTANT ascii_EQUAL      , 3D    ; ascii code
CONSTANT ascii_GREATER    , 3E    ; ascii code
CONSTANT ascii_QUESTION   , 3F    ; ascii code

CONSTANT ascii_CIRCAT     , 40    ; ascii code
CONSTANT ascii_A          , 41    ; ascii code
CONSTANT ascii_B          , 42    ; ascii code
CONSTANT ascii_C          , 43    ; ascii code
CONSTANT ascii_D          , 44    ; ascii code
CONSTANT ascii_E          , 45    ; ascii code
CONSTANT ascii_F          , 46    ; ascii code
CONSTANT ascii_G          , 47    ; ascii code
CONSTANT ascii_H          , 48    ; ascii code
CONSTANT ascii_I          , 49    ; ascii code
CONSTANT ascii_J          , 4A    ; ascii code
CONSTANT ascii_K          , 4B    ; ascii code
CONSTANT ascii_L          , 4C    ; ascii code
CONSTANT ascii_M          , 4D    ; ascii code
CONSTANT ascii_N          , 4E    ; ascii code
CONSTANT ascii_O          , 4F    ; ascii code

CONSTANT ascii_P          , 50    ; ascii code
CONSTANT ascii_Q          , 51    ; ascii code
CONSTANT ascii_R          , 52    ; ascii code
CONSTANT ascii_S          , 53    ; ascii code
CONSTANT ascii_T          , 54    ; ascii code
CONSTANT ascii_U          , 55    ; ascii code
CONSTANT ascii_V          , 56    ; ascii code
CONSTANT ascii_W          , 57    ; ascii code
CONSTANT ascii_X          , 58    ; ascii code
CONSTANT ascii_Y          , 59    ; ascii code
CONSTANT ascii_Z          , 5A    ; ascii code
CONSTANT ascii_LBKT       , 5B    ; ascii code
CONSTANT ascii_BKSLASH    , 5C    ; ascii code
CONSTANT ascii_RBKT       , 5D    ; ascii code
CONSTANT ascii_CARET      , 5E    ; ascii code
CONSTANT ascii_UNDER      , 5F    ; ascii code

CONSTANT ascii_TICK       , 60    ; ascii code
CONSTANT ascii_a          , 61    ; ascii code
CONSTANT ascii_b          , 62    ; ascii code
CONSTANT ascii_c          , 63    ; ascii code
CONSTANT ascii_d          , 64    ; ascii code
CONSTANT ascii_e          , 65    ; ascii code
CONSTANT ascii_f          , 66    ; ascii code
CONSTANT ascii_g          , 67    ; ascii code
CONSTANT ascii_h          , 68    ; ascii code
CONSTANT ascii_i          , 69    ; ascii code
CONSTANT ascii_j          , 6A    ; ascii code
CONSTANT ascii_k          , 6B    ; ascii code
CONSTANT ascii_l          , 6C    ; ascii code
CONSTANT ascii_m          , 6D    ; ascii code
CONSTANT ascii_n          , 6E    ; ascii code
CONSTANT ascii_o          , 6F    ; ascii code

CONSTANT ascii_p          , 70    ; ascii code
CONSTANT ascii_q          , 71    ; ascii code
CONSTANT ascii_r          , 72    ; ascii code
CONSTANT ascii_s          , 73    ; ascii code
CONSTANT ascii_t          , 74    ; ascii code
CONSTANT ascii_u          , 75    ; ascii code
CONSTANT ascii_v          , 76    ; ascii code
CONSTANT ascii_w          , 77    ; ascii code
CONSTANT ascii_x          , 78    ; ascii code
CONSTANT ascii_y          , 79    ; ascii code
CONSTANT ascii_z          , 7A    ; ascii code
CONSTANT ascii_LBRACE     , 7B    ; ascii code
CONSTANT ascii_VBAR       , 7C    ; ascii code
CONSTANT ascii_RBRACE     , 7D    ; ascii code
CONSTANT ascii_TILDE      , 7E    ; ascii code
CONSTANT ascii_DEL        , 7F    ; ascii code

;================================================================
; Actual assembly program goes here...
;================================================================

cold_start:     LOAD     s0, all_clear     ; zero out reg s0

                ; LAB TASK #2
                ; Write code to output a short (10 characters
                ; or less) message to the serial port.

                LOAD     s0, ascii_X        ; load the value of 'X'
                OUTPUT   s0, uart_data_tx   ; output value to hyperterminal
                LOAD     s0, ascii_i        ; load the value of 'i'
                OUTPUT   s0, uart_data_tx   ; output value to hyperterminal
                LOAD     s0, ascii_l        ; load the value of 'l'
                OUTPUT   s0, uart_data_tx   ; output value to hyperterminal
                LOAD     s0, ascii_i        ; load the value of 'i'
                OUTPUT   s0, uart_data_tx   ; output value to hyperterminal
                LOAD     s0, ascii_n        ; load the value of 'n'
                OUTPUT   s0, uart_data_tx   ; output value to hyperterminal
                LOAD     s0, ascii_x        ; load the value of 'x'
                OUTPUT   s0, uart_data_tx   ; output value to hyperterminal
                LOAD     s0, ascii_SPACE    ; add a space
                OUTPUT   s0, uart_data_tx   ; output value to hyperterminal
                LOAD     s0, ascii_R        ; load the value of 'R'
                OUTPUT   s0, uart_data_tx   ; output value to hyperterminal
                LOAD     s0, ascii_u        ; load the value of 'u'
                OUTPUT   s0, uart_data_tx   ; output value to hyperterminal
                LOAD     s0, ascii_l        ; load the value of 'l'
                OUTPUT   s0, uart_data_tx   ; output value to hyperterminal
                LOAD     s0, ascii_e        ; load the value of 'e'
                OUTPUT   s0, uart_data_tx   ; output value to hyperterminal
                LOAD     s0, ascii_s        ; load the value of 's'
                OUTPUT   s0, uart_data_tx   ; output value to hyperterminal

loop:           INPUT    s1, switch_in     ; read switch state
                OUTPUT   s1, leds_out	   ; write it to leds


                ; LAB TASK #1
                ; Write code to read the switch state and
                ; then write it to the LED control port.

rs232_echo:     LOAD     s0, all_clear     ; zero out reg s0 (nop)

                ; LAB TASK #3
                ; Write code to check if a byte has been
                ; received by the uart.  If so, write it
                ; back to the uart transmit port.  If not
                ; don't do anything and just...

                JUMP     loop              ; loop again

;================================================================
;
;================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -