fc_ctrl.rmh

来自「和picoblaze完全兼容的mcu ip core」· RMH 代码 · 共 1,493 行 · 第 1/4 页

RMH
1,493
字号
/* Symbol Table */// AB_switch = CONSTANT: 16// A_count0_port = CONSTANT: 0// A_count1_port = CONSTANT: 16// A_count2_port = CONSTANT: 32// A_count3_port = CONSTANT: 48// B_count0_port = CONSTANT: 64// B_count1_port = CONSTANT: 80// B_count2_port = CONSTANT: 96// B_count3_port = CONSTANT: 112// ISR = LABEL: 541// ISR_count = CONSTANT: 4// LCD_DB4 = CONSTANT: 16// LCD_DB5 = CONSTANT: 32// LCD_DB6 = CONSTANT: 64// LCD_DB7 = CONSTANT: 128// LCD_E = CONSTANT: 1// LCD_RS = CONSTANT: 4// LCD_RW = CONSTANT: 2// LCD_clear = LABEL: 526// LCD_cursor = LABEL: 531// LCD_drive = CONSTANT: 8// LCD_input_port = CONSTANT: 9// LCD_output_port = CONSTANT: 4// LCD_pulse_E = LABEL: 442// LCD_read_DB4 = CONSTANT: 16// LCD_read_DB5 = CONSTANT: 32// LCD_read_DB6 = CONSTANT: 64// LCD_read_DB7 = CONSTANT: 128// LCD_read_data8 = LABEL: 484// LCD_read_spare0 = CONSTANT: 1// LCD_read_spare1 = CONSTANT: 2// LCD_read_spare2 = CONSTANT: 4// LCD_read_spare3 = CONSTANT: 8// LCD_reset = LABEL: 509// LCD_write_data = LABEL: 467// LCD_write_inst4 = LABEL: 448// LCD_write_inst8 = LABEL: 452// LED_port = CONSTANT: 1// Ring_select = LABEL: 63// a_count_reset = CONSTANT: 1// b_count_reset = CONSTANT: 2// blank_digit = LABEL: 145// capture_A_count = LABEL: 575// capture_B_count = LABEL: 584// character_0 = CONSTANT: 48// character_1 = CONSTANT: 49// character_2 = CONSTANT: 50// character_3 = CONSTANT: 51// character_4 = CONSTANT: 52// character_5 = CONSTANT: 53// character_6 = CONSTANT: 54// character_7 = CONSTANT: 55// character_8 = CONSTANT: 56// character_9 = CONSTANT: 57// character_A = CONSTANT: 65// character_B = CONSTANT: 66// character_BS = CONSTANT: 8// character_C = CONSTANT: 67// character_CR = CONSTANT: 13// character_D = CONSTANT: 68// character_E = CONSTANT: 69// character_F = CONSTANT: 70// character_G = CONSTANT: 71// character_H = CONSTANT: 72// character_I = CONSTANT: 73// character_J = CONSTANT: 74// character_K = CONSTANT: 75// character_L = CONSTANT: 76// character_M = CONSTANT: 77// character_N = CONSTANT: 78// character_O = CONSTANT: 79// character_P = CONSTANT: 80// character_Q = CONSTANT: 81// character_R = CONSTANT: 82// character_S = CONSTANT: 83// character_T = CONSTANT: 84// character_U = CONSTANT: 85// character_V = CONSTANT: 86// character_W = CONSTANT: 87// character_X = CONSTANT: 88// character_Y = CONSTANT: 89// character_Z = CONSTANT: 90// character_a = CONSTANT: 97// character_b = CONSTANT: 98// character_c = CONSTANT: 99// character_colon = CONSTANT: 58// character_comma = CONSTANT: 44// character_d = CONSTANT: 100// character_divide = CONSTANT: 47// character_dollar = CONSTANT: 36// character_e = CONSTANT: 101// character_equals = CONSTANT: 61// character_exclaim = CONSTANT: 33// character_f = CONSTANT: 102// character_g = CONSTANT: 103// character_greater_than = CONSTANT: 62// character_h = CONSTANT: 104// character_i = CONSTANT: 105// character_j = CONSTANT: 106// character_k = CONSTANT: 107// character_l = CONSTANT: 108// character_less_than = CONSTANT: 60// character_m = CONSTANT: 109// character_minus = CONSTANT: 45// character_n = CONSTANT: 110// character_o = CONSTANT: 111// character_p = CONSTANT: 112// character_plus = CONSTANT: 43// character_q = CONSTANT: 113// character_question = CONSTANT: 63// character_r = CONSTANT: 114// character_s = CONSTANT: 115// character_semi_colon = CONSTANT: 59// character_space = CONSTANT: 32// character_stop = CONSTANT: 46// character_t = CONSTANT: 116// character_u = CONSTANT: 117// character_v = CONSTANT: 118// character_w = CONSTANT: 119// character_x = CONSTANT: 120// character_y = CONSTANT: 121// character_z = CONSTANT: 122// clear_A_count = LABEL: 565// clear_B_count = LABEL: 567// clear_counter = LABEL: 568// clear_spm = LABEL: 32// cold_start = LABEL: 0// count0 = CONSTANT: 0// count1 = CONSTANT: 1// count2 = CONSTANT: 2// count3 = CONSTANT: 3// count_resetport = CONSTANT: 2// counters_read = LABEL: 592// dcm_kick = CONSTANT: 128// decimal0 = CONSTANT: 17// decimal1 = CONSTANT: 18// decimal2 = CONSTANT: 19// decimal3 = CONSTANT: 20// decimal4 = CONSTANT: 21// decimal5 = CONSTANT: 22// decimal6 = CONSTANT: 23// decimal7 = CONSTANT: 24// decimal8 = CONSTANT: 25// decimal9 = CONSTANT: 26// delay_1ms = LABEL: 427// delay_1s = LABEL: 437// delay_1us = LABEL: 418// delay_1us_constant = CONSTANT: 11// delay_20ms = LABEL: 432// delay_40us = LABEL: 422// disp_50MHz_Crystal = LABEL: 276// disp_Counter = LABEL: 230// disp_DCM_Oscillator = LABEL: 304// disp_Frequency = LABEL: 211// disp_Oscillator = LABEL: 310// disp_PicoBlaze = LABEL: 192// disp_Ring_Oscillator = LABEL: 334// disp_SMA_input = LABEL: 256// disp_digit = LABEL: 140// disp_digits = LABEL: 78// disp_menu = LABEL: 349// disp_spaces = LABEL: 343// disp_version = LABEL: 245// div10_loop = LABEL: 169// div10_restore = LABEL: 176// div10_shifts = LABEL: 181// divide_32bit_by_10 = LABEL: 156// hz_digits = LABEL: 116// hz_space = LABEL: 114// int_to_BCD_loop = LABEL: 150// integer_to_BCD = LABEL: 148// khz_digits = LABEL: 97// khz_space = LABEL: 95// kick_loop = LABEL: 26// normal_isr = LABEL: 572// preserve_s0 = CONSTANT: 48// preserve_s1 = CONSTANT: 49// preserve_s2 = CONSTANT: 50// preserve_s3 = CONSTANT: 51// preserve_s4 = CONSTANT: 52// preserve_s5 = CONSTANT: 53// preserve_s6 = CONSTANT: 54// preserve_s7 = CONSTANT: 55// preserve_s8 = CONSTANT: 56// preserve_s9 = CONSTANT: 57// preserve_sA = CONSTANT: 58// preserve_sB = CONSTANT: 59// preserve_sC = CONSTANT: 60// preserve_sD = CONSTANT: 61// preserve_sE = CONSTANT: 62// preserve_sF = CONSTANT: 63// restore_reg = LABEL: 598// ring_reset = CONSTANT: 64// s0 = REGISTER: 0// s1 = REGISTER: 1// s2 = REGISTER: 2// s3 = REGISTER: 3// s4 = REGISTER: 4// s5 = REGISTER: 5// s6 = REGISTER: 6// s7 = REGISTER: 7// s8 = REGISTER: 8// s9 = REGISTER: 9// sA = REGISTER: 10// sB = REGISTER: 11// sC = REGISTER: 12// sD = REGISTER: 13// sE = REGISTER: 14// sF = REGISTER: 15// select_source = LABEL: 65// set_line2 = LABEL: 537// source_control_port = CONSTANT: 8// source_sel0 = CONSTANT: 1// source_sel1 = CONSTANT: 2// status_port = CONSTANT: 128// switch0 = CONSTANT: 1// switch1 = CONSTANT: 2// switch2 = CONSTANT: 4// switch3 = CONSTANT: 8// test_50M = LABEL: 49// test_DCM = LABEL: 54// test_Ring = LABEL: 59// test_SMA = LABEL: 44// wait_1ms = LABEL: 428// wait_1s = LABEL: 438// wait_1us = LABEL: 419// wait_20ms = LABEL: 433// wait_40us = LABEL: 423// warm_start = LABEL: 36// zero_test = LABEL: 136/* Program Code */// #1: ;KCPSM3 Program - FC_CTRL// #2: ;// #3: ;Frequency Generator Control// #4: ;Calculates and displays results on the 16x2 LCD display.// #5: ;// #6: ;// #7: ; Version : 1.12// #8: ; Date : 28th February 2006// #9: ;// #10: ; Ken Chapman// #11: ; Xilinx Ltd// #12: ;// #13: ; chapman@xilinx.com// #14: ;// #15: ;// #16: ;// #17: ;**************************************************************************************// #18: ;Port definitions// #19: ;**************************************************************************************// #20: ;// #21: CONSTANT(A_count0_port,0) ;32-bit A-counter (LSByte first)// #22: CONSTANT(A_count1_port,16)// #23: CONSTANT(A_count2_port,32)// #24: CONSTANT(A_count3_port,48)// #25: ;// #26: CONSTANT(B_count0_port,64) ;32-bit B-counter (LSByte first)// #27: CONSTANT(B_count1_port,80)// #28: CONSTANT(B_count2_port,96)// #29: CONSTANT(B_count3_port,112)// #30: ;// #31: CONSTANT(status_port,128) ;4 switches and counter status// #32: CONSTANT(switch0,1) ;  Switches      SW0 - bit0// #33: CONSTANT(switch1,2) ; active High    SW1 - bit1// #34: CONSTANT(switch2,4) ;                SW2 - bit2// #35: CONSTANT(switch3,8) ;                SW3 - bit3// #36: CONSTANT(AB_switch,16) ;  0=A-count enabled 1=B-count enabled// #37: ;// #38: ;// #39: CONSTANT(count_resetport,2) ;Reset frequency counter controls// #40: CONSTANT(a_count_reset,1) ;  A-count = bit0// #41: CONSTANT(b_count_reset,2) ;  B-count = bit1// #42: ;// #43: CONSTANT(LED_port,1) ;8 simple LEDs - active high// #44: ;// #45: ;// #46: CONSTANT(source_control_port,8) ;Select and control test sources// #47: CONSTANT(source_sel0,1) ;  00 = SMA clock  01=50MHz// #48: CONSTANT(source_sel1,2) ;  10 = DCM Osc    11=Ring Osc// #49: CONSTANT(ring_reset,64) ; active High rest of ring osc - bit6// #50: CONSTANT(dcm_kick,128) ; DCM kick start signal - bit7// #51: ;// #52: ;// #53: ;LCD interface ports// #54: ;// #55: ;The master enable signal is not used by the LCD display itself// #56: ;but may be required to confirm that LCD communication is active.// #57: ;This is required on the Spartan-3E Starter Kit if the StrataFLASH// #58: ;is used because it shares the same data pins and conflicts must be avoided.// #59: ;// #60: CONSTANT(LCD_output_port,4) ;LCD character module output data and control// #61: CONSTANT(LCD_E,1) ;   active High Enable        E - bit0// #62: CONSTANT(LCD_RW,2) ;   Read=1 Write=0           RW - bit1// #63: CONSTANT(LCD_RS,4) ;   Instruction=0 Data=1     RS - bit2// #64: CONSTANT(LCD_drive,8) ;   Master enable (active High) - bit3// #65: CONSTANT(LCD_DB4,16) ;   4-bit              Data DB4 - bit4// #66: CONSTANT(LCD_DB5,32) ;   interface          Data DB5 - bit5// #67: CONSTANT(LCD_DB6,64) ;                      Data DB6 - bit6// #68: CONSTANT(LCD_DB7,128) ;                      Data DB7 - bit7// #69: ;// #70: ;// #71: CONSTANT(LCD_input_port,9) ;LCD character module input data// #72: CONSTANT(LCD_read_spare0,1) ;    Spare bits               - bit0// #73: CONSTANT(LCD_read_spare1,2) ;    are zero                 - bit1// #74: CONSTANT(LCD_read_spare2,4) ;                             - bit2// #75: CONSTANT(LCD_read_spare3,8) ;                             - bit3// #76: CONSTANT(LCD_read_DB4,16) ;    4-bit           Data DB4 - bit4// #77: CONSTANT(LCD_read_DB5,32) ;    interface       Data DB5 - bit5// #78: CONSTANT(LCD_read_DB6,64) ;                    Data DB6 - bit6// #79: CONSTANT(LCD_read_DB7,128) ;                    Data DB7 - bit7// #80: ;// #81: ;// #82: ;// #83: ;Special Register usage// #84: ;// #85: ;// #86: ;// #87: ;**************************************************************************************// #88: ;Scratch Pad Memory Locations// #89: ;**************************************************************************************// #90: ;// #91: ;// #92: CONSTANT(count0,0) ;last 32-bit counter value (LSByte first)// #93: CONSTANT(count1,1)// #94: CONSTANT(count2,2)// #95: CONSTANT(count3,3)// #96: ;// #97: CONSTANT(ISR_count,4) ;count number of interrupts for a clean start// #98: ;// #99: CONSTANT(decimal0,17) ;10 digit decimal value up to 4,294,967,295// #100: CONSTANT(decimal1,18)// #101: CONSTANT(decimal2,19)// #102: CONSTANT(decimal3,20)// #103: CONSTANT(decimal4,21)// #104: CONSTANT(decimal5,22)// #105: CONSTANT(decimal6,23)// #106: CONSTANT(decimal7,24)// #107: CONSTANT(decimal8,25)// #108: CONSTANT(decimal9,26)// #109: ;// #110: ;// #111: ;// #112: CONSTANT(preserve_s0,48) ;place to save register contents// #113: CONSTANT(preserve_s1,49)// #114: CONSTANT(preserve_s2,50)// #115: CONSTANT(preserve_s3,51)// #116: CONSTANT(preserve_s4,52)// #117: CONSTANT(preserve_s5,53)// #118: CONSTANT(preserve_s6,54)// #119: CONSTANT(preserve_s7,55)// #120: CONSTANT(preserve_s8,56)// #121: CONSTANT(preserve_s9,57)// #122: CONSTANT(preserve_sA,58)// #123: CONSTANT(preserve_sB,59)// #124: CONSTANT(preserve_sC,60)// #125: CONSTANT(preserve_sD,61)// #126: CONSTANT(preserve_sE,62)// #127: CONSTANT(preserve_sF,63)// #128: ;// #129: ;// #130: ;// #131: ;**************************************************************************************// #132: ;Useful data constants// #133: ;**************************************************************************************// #134: ;// #135: ;// #136: ;// #137: ;Constant to define a software delay of 1us. This must be adjusted to reflect the// #138: ;clock applied to KCPSM3. Every instruction executes in 2 clock cycles making the// #139: ;calculation highly predictable. The '6' in the following equation even allows for// #140: ;'CALL delay_1us' instruction in the initiating code.// #141: ;

⌨️ 快捷键说明

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