初版,Logisim转换Verilog

This commit is contained in:
2026-09-12 13:18:24 +08:00
commit 03ac91bf65
12 changed files with 3406 additions and 0 deletions
@@ -0,0 +1,428 @@
#############################################################
#jal,jalr指令
#############################################################
.text
addi s1,zero, 1 #jal,jalrr指令
j jmp_next1 #jal x0,8
addi s1,zero, 1
addi s2,zero, 2
addi s3,zero, 3
jmp_next1:
j jmp_next2
addi s1,zero, 1
addi s2,zero, 2
addi s3,zero, 3
jmp_next2:
j jmp_next3
addi s1,zero, 1
addi s2,zero, 2
addi s3,zero, 3
jmp_next3:
j jmp_next4
addi s1,zero, 1
addi s2,zero, 2
addi s3,zero, 3
jmp_next4:jal jmp_count
# addi,sll,add,ecall,srl,sll,sra,beq,j,ecall revise date:2015/12/16 tiger
.text
addi s0,zero,1 #011151
addi s1,zero,1
slli s1, s1, 31 #31 s1=0x80000000
###################################################################
#
# 0x80000000 0x20000000 0x08000000 0x02000000 0x00800000 0x00200000 0x00080000 0x00020000 0x00008000 0x00002000 0x00000800 0x00000200 0x00000080 0x00000020 0x00000008 0x00000002 0x00000000
###################################################################
LogicalRightShift: #1
add a0,zero,s1 #display s1
addi a7,zero,34 # display hex
ecall # we are out of here.
srli s1, s1, 2
beq s1, zero, shift_next1
j LogicalRightShift
shift_next1:
add a0,zero,s1 #display s1
addi a7,zero,34 # display hex
ecall # we are out of here.
###################################################################
#
# 0x00000004 0x00000010 0x00000040 0x00000100 0x00000400 0x00001000 0x00004000 0x00010000 0x00040000 0x00100000 0x00400000 0x01000000 0x04000000 0x10000000 0x40000000 0x00000000
###################################################################
addi s1,zero, 1
LogicalLeftShift: #1
slli s1, s1, 2
add a0,zero,s1 #display s1
addi a7,zero,34 # display hex
ecall # we are out of here.
beq s1, zero, ArithRightShift
j LogicalLeftShift
###################################################################
#
# 0x80000000 0xf0000000 0xff000000 0xfff00000 0xffff0000 0xfffff000 0xffffff00 0xfffffff0 0xffffffff
###################################################################
ArithRightShift: ##80000000F0000000,FF000000,FFF00000,FFFF0000直至FFFFFFFF
addi s1,zero,1
slli s1, s1, 31 #31 s1=0x80000000
add a0,zero,s1 #display s1
addi a7,zero,34 # display hex
ecall # we are out of here.
srai s1, s1, 3 #s1=0X80000000-->0XF0000000
add a0,zero,s1 #display s1
addi a7,zero,34 # display hex
ecall # we are out of here.
srai s1, s1, 4 #0XF0000000-->0XFF000000
add a0,zero,s1 #display s1
addi a7,zero,34 # display hex
ecall # we are out of here.
srai s1, s1, 4 #0XFF000000-->0XFFF00000
add a0,zero,s1 #display s1
addi a7,zero,34 # display hex
ecall # we are out of here.
srai s1, s1, 4
add a0,zero,s1 #display s1
addi a7,zero,34 # display hex
ecall # we are out of here.
srai s1, s1, 4
add a0,zero,s1 #display s1
addi a7,zero,34 # display hex
ecall # we are out of here.
srai s1, s1, 4
add a0,zero,s1 #display s1
addi a7,zero,34 # display hex
ecall # we are out of here.
srai s1, s1, 4
add a0,zero,s1 #display s1
addi a7,zero,34 # display hex
ecall # we are out of here.
srai s1, s1, 4
add a0,zero,s1 #display s1
addi a7,zero,34 # display hex
ecall # we are out of here.
#############################################################
#,addi,andi,sll,srl,sra,or,ori,nor,ecall LED按走马灯方式来回显示数据
#############################################################
.text
addi s0,zero,1
slli s3, s0, 31 # s3=0x80000000
srai s3, s3, 31 # s3=0xFFFFFFFF
add s0,zero,zero # s0=0
addi s2,zero,12
addi s6,zero,3 #
zmd_loop:
addi s0, s0, 1 #
andi s0, s0, 15
#######################################
addi t0,zero,8
addi t1,zero,1
left:
slli s3, s3, 4 #
or s3, s3, s0
add a0,zero,s3 # display s3
addi a7,zero,34 # system call for LED display
ecall # display
sub t0,t0,t1
bne t0,zero,left
#######################################
addi s0, s0, 1 #
addi t6,zero,15
and s0, s0, t6
slli s0, s0, 28
addi t0,zero,8
addi t1,zero,1
zmd_right:
srli s3, s3, 4 #
or s3, s3, s0
add a0,zero,s3 # display s3
addi a7,zero,34 # system call for LED display
ecall # display
sub t0,t0,t1
bne t0,zero,zmd_right
srli s0, s0, 28
#######################################
sub s6,s6,t1
beq s6,zero, exit
j zmd_loop
exit:
add t0,zero,zero
xori t0,t0,-1 #test r xori
slli t0,t0,8
ori t0,t0,255
add a0,zero,t0 # display t0
addi a7,zero,34 # system call for LED display
ecall # display
#################################################################################
#0-15,rars 仿
#rars Setting中的Memory Configuration设置为Compactdata at address 0
#################################################################################
.text
sort_init:
addi s0,zero,-1
addi s1,zero,0
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
sw s0,0(s1)
addi s0,s0,1
addi s1,s1,4
addi s0,s0,1
add s0,zero,zero
addi s1,zero,60 #
sort_loop:
lw s3,0(s0)
lw s4,0(s1)
slt t0,s3,s4
beq t0,zero,sort_next #
sw s3, 0(s1)
sw s4, 0(s0)
sort_next:
addi s1, s1, -4
bne s0, s1, sort_loop
add a0,zero,s0 #display s0
addi a7,zero,34 # display hex
ecall # we are out of here. DISP: disp r0, 0
addi s0,s0,4
addi s1,zero,60
bne s0, s1, sort_loop
addi a7,zero,10 # benchmark ecall # CCAB
#############################################
# insert your ccmb benchmark program here!!!
#############################################
#===== [1] CDIVU divu/mflo=====
#0x11110000 0x08888000 0x04444000 0x02222000 0x01111000 0x00888800 0x00444400 0x00222200 0x00111100 0x00088880 0x00044440 0x00022220 0x00011110 0x00008888 0x00004444 0x00002222 0x00001111 0x00000888 0x00000444 0x00000222 0x00000111 0x00000088 0x00000044 0x00000022 0x00000011 0x00000008 0x00000004 0x00000002 0x00000001
addi t0,zero,2 # /2
addi s1,zero, 0x11
slli s1,s1,8
addi s1,s1,0x11
slli s1,s1,16
add a0,zero,s1
addi a7,zero,34
ecall
addi t3,zero,28 #
divu_branch:
divu s1,s1,t0 #
add a0,zero,s1
addi a7,zero,34
ecall #
addi t3,t3, -1
bne t3,zero,divu_branch #
addi a7,zero,10 # 退
#===== [2] CREMU =====
# 0x87540110
addi s1,x0,0x88
slli s1,s1,8
addi s1,s1,0x48
addi s2,x0,0x87
slli s2,s2,8
addi s2,s2,0x54
remu s2,s2,s1
slli s2,s2,16
ori s2,s2,0x110
add a0,zero,s2
addi a7,zero,34 # system call for print
ecall
addi a7,zero,10 # system call for exit
#===== [3] ASB =====
# 0x00000000 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 0x00000008 0x00000009 0x0000000a 0x0000000b 0x0000000c 0x0000000d 0x0000000e 0x0000000f 0x00000010 0x00000011 0x00000012 0x00000013 0x00000014 0x00000015 0x00000016 0x00000017 0x00000018 0x00000019 0x0000001a 0x0000001b 0x0000001c 0x0000001d 0x0000001e 0x0000001f 0x03020100 0x07060504 0x0b0a0908 0x0f0e0d0c 0x13121110 0x17161514 0x1b1a1918 0x1f1e1d1c
addi t1,zero,0 #init_addr
addi t3,zero,32 #counter
#sb写入 01,02,03,04
addi s1,zero, 0x00 #
addi s2,zero, 0x01 #
sb_store:
sb s1,(t1)
add a0,zero,s1
addi a7,zero,34 # system call for print
ecall # print
add s1,s1,s2 #data +1
addi t1,t1,1 # addr ++
addi t3,t3,-1 #counter
bne t3,zero,sb_store
addi t3,zero,8
addi t1,zero,0 # addr
sb_branch:
lw s1,(t1) #
add a0,zero,s1
addi a7,zero,34 # system call for print
ecall # print
addi t1,t1,4
addi t3,t3, -1
bne t3,zero,sb_branch
addi a7,zero,10 # system call for exit
#===== [4] BBLT =====
#0xfffffff1 0xfffffff2 0xfffffff3 0xfffffff4 0xfffffff5 0xfffffff6 0xfffffff7 0xfffffff8 0xfffffff9 0xfffffffa 0xfffffffb 0xfffffffc 0xfffffffd 0xfffffffe 0xffffffff
addi s1,zero,-15 #
blt_branch:
add a0,zero,s1
addi a7,zero,34
ecall #
addi s1,s1,1
blt s1,zero,blt_branch #
ccab_end:
addi a7,zero,10
#ecall
jmp_count: addi s0,zero, 0
addi s0,s0, 1
add a0,zero,s0
addi a7,zero,34 # display hex
ecall # we are out of here.
addi s0,s0, 2
add a0,zero,s0
addi a7,zero,34 # display hex
ecall # we are out of here.
addi s0,s0, 3
add a0,zero,s0
addi a7,zero,34 # display hex
ecall # we are out of here.
addi s0,s0, 4
add a0,zero,s0
addi a7,zero,34 # display hex
ecall # we are out of here.
addi s0,s0, 5
add a0,zero,s0
addi a7,zero,34 # display hex
ecall # we are out of here.
addi s0,s0, 6
add a0,zero,s0
addi a7,zero,34 # display hex
ecall # we are out of here.
addi s0,s0, 7
add a0,zero,s0
addi a7,zero,34 # display hex
ecall # we are out of here.
addi s0,s0, 8
add a0,zero,s0
addi a7,zero,34 # display hex
addi a7,zero,34 # display hex
ecall # we are out of here.
ret #persudo instruction jalr x0,x1,0