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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
这个例子是用于测试我写的ARM这个内核,测试例子是一个求最大公约数和最小公倍数的程序。! S* e. ?: [: t. k- ^8 S) o7 G

  b* f2 m1 J, i4 g) ~& \3 e/ K; V; L: o4 E" f" M
1、已解决问题:LDR1这条指令的' G5 q6 O5 _8 V1 I* G
% Q5 G2 b1 [, D- E
#10  i_datain <= { `LDR1, 5'b0000_1, `gr0,`gr2};      //LDR0 5'b01001,PC                  00:6a01- b$ Y9 g7 G! c' Q
#10  i_datain <= { `LDR1, 5'b0001_0,`gr0,`gr1};      //LDR0 5'b01001,PC                   04:6902" {2 ]- j( A1 r% c+ c2 ]! I6 B
//阻塞相当于延迟一个周期取i_datain        
6 }3 Z$ P& `5 O0 }8 C0 z3 C5 [#10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                 08:1883   
* z5 F; n6 i4 U  C#10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                 08:18832 f9 n2 h3 p% _2 h
     d_datain <=   RAM[0];//32'hffff0000;//32'h000f0000;8 G6 `7 x2 V7 ^- W5 W" ]
#10  i_datain <= { `SUB0, `gr1, `gr2, `gr1}; 7 r: D3 g2 o+ x) K) v8 F+ W! z- d
     d_datain <=   RAM[1];2 |& {" N& l; n  V& v# y. U/ d
这里的处理就可以仿真RAM的时序。要特别注意这个是碰到LDR1要stall的仿真。# U" x5 h- ]8 f, D- I: |

$ F1 H6 G) x3 O: H7 ~2、未解决问题:跳转到具体位置(需加上内核RAM之后再确定)
" C' @. V" [- {, L1 |" ]1 X. h9 m, H# B) i0 R4 K
#10  i_datain <= { `B1, 12'b0100_0000_1001 };                       //0e:d409
, B- j* q" V6 x% R3、已解决问题:条件跳转时nf会在为0或者为1是都会跳转,因为是测试是用了别的处理器的汇编代码。为了解决这个问题,就把其中一个条件略作了改动,以测试这个汇编代码。
7 P$ X+ B1 Z; u& X
8 K  e, N4 r' j6 |nf <= 1;  跳转  ( s! N; Y% t; ?/ ^) N
cf <= 1;  其实就是nf = 0 适合的是nf=0跳转( }0 ~4 y1 H4 N* d% M2 y
4、已解决问题:跳转时序调整(将跳转信号往后一个周期)% a! h- i: N* l8 V; j
, I1 r" C) R8 b7 D- W: m& e# |
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));& N; a8 u. k# L* z9 N4 J. y. U
5、已解决问题:信号条件跳转后,后面取得两条全部都是废的,那么我们就将其控制信号置为0即可。
% ?: \! {( l' e1 e9 ]; \2 y
0 J% u' @! m9 l* x5 f5 y; G% h未加RAM的正确方针:7 ]. y9 @- m2 Z( j1 E

5 c1 N$ k7 j( i                #10  i_datain <= { `B1, 12'b0010_0000_0010 };                                          
# |9 E$ T$ T" B% {                #10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                         08:1883
+ T) ?+ g; M; \& A2 g  g2 c2 T                #10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                         08:1883       
* `  o: M3 V- h3 A( `/ Y" z3 W' k, Z0 P                #10  i_datain <= { `ADD1, `gr1, `gr0, `gr3};//ADD1 7'b0001100 //Rd=Rm+Rn                         08:1883        5 N& T% R# Z# |1 D5 Z- I: l: E
6、未解决问题:内核的pc和RAM的时序不一致。需要进行一些时序上的调整。
& ~3 _& L  a7 r7 j8 B; {当前进度:; w1 d: T/ k. e5 T0 {. Z* b

5 E  l! [& r( m$ d" V7、已解决问题:无条件跳转,在取操作数的时候进行跳转。这样就可以只要一条的取指代价。
" L2 A  |: L- f. j8 H& z, Y' S8、已解决问题:对齐enable与地址信号。
; u& Z! l' w  P# _) W  C0 L7 `3 T  R' @4 u$ o, u, Y& K- ]& [
always@(posedge clock) begin
& ^( E9 _, s  O* y        if(!reset)0 b( ?* _! k& \4 T
                d_addr <= 0;
2 T9 D& t% r/ U4 k. z: B        else0 N# S6 f2 h9 T" |/ a" ]4 C
                d_addr <= reg_C[6:0];
# C) _) d; L- M, d2 cend2 Y8 y3 ~* P0 t: ^" n
9、未解决问题:LDR1的d_re还没有检测。
& O0 c" t8 A9 e- S4 B0 Q1 j  {  b10、工程进度:测到地址为0xe的指令。( `6 U  @8 h* b4 n
  • 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 21:52 , Processed in 0.171875 second(s), 23 queries , Gzip On.

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

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

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