SpinalHDL之高级示例(上篇)

本文作为SpinalHDL学习笔记第四十二篇,介绍SpinalHDL JTAG TAP。

 

目录:

1.JTAG 总线

2.JTAG 状态机

3.JTAG TAP

4.Jtag 指令

5.JTAG TAP 类接口

 

 

重要: 本文的目的是展示一个 JTAG TAP(从设备)的非常规方式实现方法。这个实现并不简单,它混合了面向对象编程、抽象接口解耦、硬件生成和硬件描述。当然,简单的 JTAG TAP 实现只需通过简单的硬件描述就可以完成,但这里的目标实际上是更进一步,创建一个可重用和可扩展的 JTAG TAP 生成器。

常用的 HDL 与 Spinal 之间的一个重要区别在于, SpinalHDL 允许定义硬件生成器/构建器。这与描述硬件的方式非常不同。让我们看看下面的例子,因为在生成/构建/描述之间的区别可能看起来像是在“玩文字游戏”,或者可以用不同的方式解释。下面的示例是一个 JTAG TAP,它允许 JTAG 主设备读取 switchs/keys 的输入并写入 leds 的输出。主设备也可以通过使用 UID 0x87654321 来识别此 TAP。

class SimpleJtagTap extends Component {
val io = new Bundle {
val jtag = slave(Jtag())
val switchs = in Bits(8 bits)
val keys = in Bits(4 bits)
val leds = out Bits(8 bits)
}
val tap = new JtagTap(io.jtag, 8)
val idcodeArea
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千穹凌帝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值