ee_king的个人空间 https://blog.eetop.cn/1494617 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

七:Register Abstraction Layer(从Registers/Specification开始)

已有 1200 次阅读| 2019-2-20 11:00 |系统分类:芯片设计

   Registers/Specification 

     连接到主处理器的硬件功能块通过存储器映射寄存器进行管理。这意味着软件地址映射中的每个位对应于硬件触发器。为了控制硬件并与之交互,软件必须读取和写入寄存器,因此使用抽象(称为硬件 - 软件接口或寄存器描述)来组织寄存器描述。
       该硬件 - 软件接口将I / O存储器映射中的地址分配给由助记符标识的寄存器。然后可以将每个寄存器分解成域,或者再次给予助记符的各个位组。域可以只是一个比特,也可以与寄存器位宽本身一样宽。每个域可以具有不同的访问属性,例如,它可以是只读,只写,读写或读取时清除。寄存器可以具有保留域,换言之,寄存器中的位未被使用但可以在设计的未来版本中使用。以下是寄存器描述示例 - 来自SPI主控DUT的控制寄存器:

      【此处省略一张表】

       对于给定的功能块,可能存在多个寄存器,并且每个寄存器将具有从块的基地址偏移的特定地址。要访问寄存器,处理器将对其地址进行读或写操作。软件工程师使用寄存器映射来确定如何编程硬件设备,他可能会使用一组define语句将寄存器名称和字段名称映射到头文件中的数值,以便他可以在更抽象的级别工作细节。例如,如果他希望在SPI主控制器中启用中断,则可以从CTRL读取,然后使用IE对该值进行“或”运算,然后将结果值写回CTRL:

spi_ctrl = reg_read(CTRL);
spi_ctrl = spi_ctrl | IE;
reg_write(CTRL, spi_ctrl);

       SPI主控制器的寄存器地址映射如下表所示。注意,控制寄存器与参考SPI主基地址来看的偏移地址为0x10。

   SPI Master Register Address Map

        【此处省略一张表

        :在SPI主控制器中,RXn和TXn寄存器实际映射到相同的硬件触发器上,在字符发送和接收期间,它们的内容会发生变化。因此,从软件接口抽象中,TX寄存器是只写的,并且RX寄存器是只读的,并且Rx内容仅在字符传输结束时有效。
       如果SPI主设备集成到更大的设计中,则SPI主设备的基地址将发生变化,软件工程师通过更新其头文件来保护自己免受该更改的影响,但底层固件代码无需更改。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 0

    好友
  • 0

    获赞
  • 6

    评论
  • 访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-19 19:11 , Processed in 0.028476 second(s), 18 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部