e203_exu_csr模块里同时读写csr寄存器会不会有问题?
模块里的寄存器是用的sirv_gnrl_dfflr,同时读写的话,读到的是新写进去的值。csrrw这种指令会有问题吧 可能csrr csrw这种用法把这个问题掩盖了。我没环境验证这个问题,只是自己在做csr寄存器的时候遇到了这个问题,所以想问下
哄哄2190 天前 ·
1 楼
多谢(o^^o) 看了你发的文章,又回去看了下代码,是我弄错了。没跟到底,后面csr读出来后转了几个模块,最后写回rf了。
这个论坛我用不好,uuty也是我 登不上去了……
u
uuty2191 天前 ·
3 楼
dnxt和qout对应的是写和读吧,在csr模块里用在处理csrrw指令时,对应的就是read_csr_dat和wbck_csr_dat。
我还没全读懂整个core,还在学习,所以说的可能不准确。在e203_exu_csr模块里读写csr寄存器应该是同一个周期。拿mepc来说,寄存器只有一份,
read_csr_dat应该得到是wbck_csr_dat的值。dnxt和qout在上升延过后值是一样的。read_csr_dat后面也没有寄存器存,进了exu_alu
比如csrrw x2 mepc x1
rd x2会变成x1的值,而不是原来mepc的
💡 请 登录 后参与讨论(微信扫码即登录/注册)
帖子信息
版块开源蜂鸟E203
回复6
浏览6352
发布2020-10-03 02:57