找回密码
 注册
关于网站域名变更的通知
查看: 283|回复: 1
打印 上一主题 下一主题

数字电路设计之ARM m0进度(1)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-11-25 13:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
这个例子是用于测试我写的ARM这个内核,测试例子是一个求最大公约数和最小公倍数的程序。
$ V3 s! A) d$ m# ?+ \  t# \1 z+ k5 X7 i; k' Q. q2 f
$ Q6 c6 f0 e' o; L" C
1、已解决问题:LDR1这条指令的$ v' c* I* i) \# H% V+ V
: n, k, z, w: f1 W% F
#10  i_datain <= { `LDR1, 5'b0000_1, `gr0,`gr2};      //LDR0 5'b01001,PC                  00:6a01
9 z3 t  o1 n" r# i( ?& P, U  {- ?#10  i_datain <= { `LDR1, 5'b0001_0,`gr0,`gr1};      //LDR0 5'b01001,PC                   04:6902
; g8 C, p' r$ s//阻塞相当于延迟一个周期取i_datain        * b5 H( {( W$ ~% o5 E* ]
#10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                 08:1883   
& q9 o" R. v) e6 g#10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                 08:1883
6 _2 A; g2 W6 P5 v  Q4 T     d_datain <=   RAM[0];//32'hffff0000;//32'h000f0000;+ }! C" W% ^: R' ]! Y! ]
#10  i_datain <= { `SUB0, `gr1, `gr2, `gr1};
0 i& ~+ }# g+ z* R     d_datain <=   RAM[1];7 S; a! k( i" N9 }) q
这里的处理就可以仿真RAM的时序。要特别注意这个是碰到LDR1要stall的仿真。
' L. t7 M5 M5 J) M5 D+ B
% t" `; g2 U# ~1 I# [6 S2、未解决问题:跳转到具体位置(需加上内核RAM之后再确定)
. l" N+ s7 V! j# H' M2 b5 p- G4 c( D) Z. l; f
#10  i_datain <= { `B1, 12'b0100_0000_1001 };                       //0e:d409/ k6 ]: w+ c) m6 O" Z: }2 l
3、已解决问题:条件跳转时nf会在为0或者为1是都会跳转,因为是测试是用了别的处理器的汇编代码。为了解决这个问题,就把其中一个条件略作了改动,以测试这个汇编代码。
0 X6 [" ?% ~3 U. H: w) n* j& f" Q) x. Q" e8 x: g
nf <= 1;  跳转  8 q2 U1 D4 Z# H. C; L
cf <= 1;  其实就是nf = 0 适合的是nf=0跳转
0 w3 N% H! g  y4、已解决问题:跳转时序调整(将跳转信号往后一个周期)* H1 j0 L+ k6 P' |$ v) a& Z2 r
1 e( q6 L% R  _' y
assign can_jump = ((cond_1[3]==1'b1)&&(nf == 1))|((cond_1[2]==1'b1)&&(zf == 1))|((cond_1[1]==1'b1)&&(cf == 1))|((cond_1[0]==1'b1)&&(vf == 1));  t. F* d& ]+ c4 J  i2 M
5、已解决问题:信号条件跳转后,后面取得两条全部都是废的,那么我们就将其控制信号置为0即可。
1 o4 |; ~# O- p- B1 W2 |6 ]& `# n3 I1 E& n. Q: J4 f9 x4 {* n- {
未加RAM的正确方针:
0 B' E. i$ \" a, u
# s( c" ~% e+ x, u" ~! m                #10  i_datain <= { `B1, 12'b0010_0000_0010 };                                          
& L, X. `) ^7 B/ {6 D- v! H                #10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                         08:1883
: v$ X& p9 h/ F                #10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                         08:1883        / v) ~! H! I6 W9 _- `- ^0 Z
                #10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                         08:1883       
" W9 u7 H) L  s/ \% t* G6、未解决问题:内核的pc和RAM的时序不一致。需要进行一些时序上的调整。 5 e3 w; g( v* x
当前进度:
$ b7 {$ X1 T3 }6 d  h: w" W# {* N7 o2 b& `) [, s! a
7、已解决问题:无条件跳转,在取操作数的时候进行跳转。这样就可以只要一条的取指代价。0 v: h: L3 B4 T' B) w) M
8、已解决问题:对齐enable与地址信号。: C1 v, Y9 O% U2 P, c
" v! \5 t  B4 t* ?" h
always@(posedge clock) begin, T# ~  v+ |% h1 _# p9 d; d
        if(!reset)( `% `7 t  i- n" ^1 ^" j+ `+ F6 i" j# g
                d_addr <= 0;/ t7 [# p1 w, y0 E. o
        else
3 e! `0 ?2 p  I! f! R% V                d_addr <= reg_C[6:0];7 m, a( a0 R# H) F* d
end
3 p( Z$ X- O( b- Q! \! |' y) I9、未解决问题:LDR1的d_re还没有检测。' |! E( o. n0 i
10、工程进度:测到地址为0xe的指令。
4 u/ Y/ ]; @( l/ `" ~5 d: u
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-11-25 15:00 | 只看该作者
    数字电路设计之ARM m0进度
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 22:09 , Processed in 0.156250 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表