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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这个例子是用于测试我写的ARM这个内核,测试例子是一个求最大公约数和最小公倍数的程序。
2 e2 b7 O" n) {) @$ E# R; A4 x$ u% f7 F0 P
, ^& T2 m' V6 {5 y) t  w
1、已解决问题:LDR1这条指令的
" p" X0 d8 v) ^! c  }" ?. {; c/ @9 T& V$ n/ B% T" M
#10  i_datain <= { `LDR1, 5'b0000_1, `gr0,`gr2};      //LDR0 5'b01001,PC                  00:6a01* ]* k4 v4 V$ N- @" h3 f# K
#10  i_datain <= { `LDR1, 5'b0001_0,`gr0,`gr1};      //LDR0 5'b01001,PC                   04:6902) D2 S: e# Y' _0 h# ?7 M6 C
//阻塞相当于延迟一个周期取i_datain        - B7 d% o, h. ?' t8 J8 ]# P- r4 T
#10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                 08:1883    + R2 P$ ^/ i6 I8 H5 O: F, m5 w) ^
#10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                 08:1883+ \( a4 @. N! @/ W3 A+ p
     d_datain <=   RAM[0];//32'hffff0000;//32'h000f0000;
0 I0 }4 y# M; R# i/ e. c#10  i_datain <= { `SUB0, `gr1, `gr2, `gr1}; ' ]8 k7 G% Y! \% U
     d_datain <=   RAM[1];
  _) g- b5 _0 I) `7 l这里的处理就可以仿真RAM的时序。要特别注意这个是碰到LDR1要stall的仿真。
; z' y" E: l/ V7 s) T
% a' ?5 _  N  `: U! p0 M2、未解决问题:跳转到具体位置(需加上内核RAM之后再确定)
9 q( U5 g# W- B( p* o4 o8 W' M6 E3 E
#10  i_datain <= { `B1, 12'b0100_0000_1001 };                       //0e:d409
) X9 e, e5 _8 E" z9 ]# u3、已解决问题:条件跳转时nf会在为0或者为1是都会跳转,因为是测试是用了别的处理器的汇编代码。为了解决这个问题,就把其中一个条件略作了改动,以测试这个汇编代码。9 X3 c8 t. u- s  Y
) p: e/ L9 }  Y+ h  V" k$ R* J
nf <= 1;  跳转  * K) S' I& d+ g% e3 @
cf <= 1;  其实就是nf = 0 适合的是nf=0跳转
8 l: e! j: q" q0 F+ T0 x: p4、已解决问题:跳转时序调整(将跳转信号往后一个周期)
0 b% N: V2 {- Q- ?' N
; r4 u6 z' I" Z7 Q  u' nassign 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));
+ A+ W& G$ W! a  k8 V* q5、已解决问题:信号条件跳转后,后面取得两条全部都是废的,那么我们就将其控制信号置为0即可。
2 A; v5 A( n, _# Z+ b& S' J' k& W
未加RAM的正确方针:
2 W1 x  }' _3 o: e1 g8 W8 D* ]! n, p- i, w) N
                #10  i_datain <= { `B1, 12'b0010_0000_0010 };                                           : K  p( s9 O' U. h( T8 A
                #10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                         08:1883
- X1 {" }" k  x; M5 [5 ~/ X                #10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                         08:1883       
- B* ~6 E; W1 [7 ]- x                #10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                         08:1883       
5 @9 a9 O1 C$ W% {) @! o  w( o. h6、未解决问题:内核的pc和RAM的时序不一致。需要进行一些时序上的调整。 ! ~4 J4 U$ F" z2 b
当前进度:
9 O) ~. q1 |, g' A3 N
! I$ u0 q8 y( i. ~4 {6 ^: h7、已解决问题:无条件跳转,在取操作数的时候进行跳转。这样就可以只要一条的取指代价。
: k1 _5 m% Q8 Z+ F: X" g8、已解决问题:对齐enable与地址信号。
0 ?5 f& [3 F7 b% F3 d* h
' }0 L' v: @( x) h8 o; Yalways@(posedge clock) begin! M3 k, p. ~/ a7 {
        if(!reset)
1 ^) [/ U2 q) d                d_addr <= 0;
# U. @& |! d2 a" [4 R! p, ]        else* c" l- K- ]0 Z; c4 A
                d_addr <= reg_C[6:0];" ]5 |. N" l5 V( }! a
end
4 B9 \+ e* L* \& p5 j1 M9、未解决问题:LDR1的d_re还没有检测。& ?) k4 `2 l' K
10、工程进度:测到地址为0xe的指令。
. T! w5 k1 b- [$ }
  • 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-25 00:45 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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