我正在尝试建立一个PicoBlaze的程序,这将从格雷码转换为二进制,反之亦然。以下是我到目前为止所做的工作:
address 0
start: ;Infinite loop...
;Converting from binary to gray...
constant binary_input,0
constant gray_output,0
input s0,binary_input
load s1,s0
sr0 s1
xor s1,s0
output s1,gray_output ;Seems to work.
;Converting from gray to binary...
constant gray_input,1
constant binary_output,1
input s0,gray_input
load s1,s0
sl0 s1
xor s1,s0
output s1,binary_output ;Does not work.
jump start因此,从二进制到Gray的转换似乎是有效的。但是,从Gray到binary的转换不起作用。例如,对于输入:
2
3我希望得到以下输出:
3
2但是,我得到了以下输出:
3
5这里发生什么事情?我正在用PicoBlaze Simulator测试我的程序。
发布于 2020-11-12 20:59:03
好了,这看起来很管用:
address 0
start: ;Infinite loop...
;Converting from binary to gray...
constant binary_input,0
constant gray_output,0
input s0,binary_input
load s1,s0
sr0 s1
xor s1,s0
output s1,gray_output
;Converting from gray to binary...
constant gray_input,1
constant binary_output,1
input s0,gray_input
load s1,s0
convert_to_binary_loop:
sr0 s1
xor s0,s1
compare s1,0
jump nz,convert_to_binary_loop
output s0,binary_output
jump starthttps://stackoverflow.com/questions/64803450
复制相似问题