本帖最后由 Doreen 于 2020-8-21 11:26 编辑 第十二讲 1. FreeRTOS提供了5种 内存管理方式,请问本次课程我们用的哪种任务管理方式? 答: 5种方式根据其特性各有其应用场景,我们用的是heap_4.c。 2. 创建的2个任务里面用到LED0 LED1,那LED的掩码位是怎么确定的呢? 答:FPGA的LED是 连接到RISC-V GPIO 对应位,具体的我们在第九讲有讲到。 |
第十讲 1. 在pwm实验中,pwmcmp0设置为9,那pwm波的周期是多少? 答:当设置pwmcfg寄存器的pwmzerocmp域为1时,计数值比较器寄存器pwms的值等于pwmcmp0设置的值时,计数值自动清零,重新计数;因此,pwm波的周期为10个计数时间(计数值范围为0~9)。 |
第八讲 1.从本讲中的流水灯实验现象可知:从QSPI Flash 启动的应用程序,T-Core掉电重启后还可以看到流水灯。那如果下载时只想看一下现象,而不想烧录到QSPI Flash,应该如何做呢? 答: 通过切换 GNU RISC-V Cross Linker 的 link文件,将 link_flash.lds文件切换至 link_itcm.lds 文件即可。 link 脚本中的内容是包括 init,text,data等等程序片段及设定对应的存储器。所以 link_flash/link_itcm两个link脚本可以切换固化 Flash 和只在 ITCM 中运行两种方式。link_itcm 的原理是通过 OpenOCD 将程序加载进 ITCM 中,并跳转到 ITCM 执行,由于 ITCM 是 sram 架构,所以掉电后程序就丢失了。从而实现了只看一下现象而不固化程序的目的。 |
第七讲 1. 如果是自定义指令,GCC工具是否不支持? 答:不支持,需要对 GCC 进行修改才能支持;第七讲主要介绍 RISC-V 自定义指令的硬件修改,之后会有专门一讲介绍软件的修改和 dot 指令的 demo。 2. 是不是尽量不要选用 resreved 的编码空间? 答:是的,在自定义指令的时候尽量不要选用 reserved 的编码空间,因为它的指令标准会被更新,更新后可能会使用到这个编码空间,如果你刚好也选用了这个编码空间,那就会发生冲突。 3. 假如在 E203 中新增一条 ans = a % b 的组合逻辑型自定义指令,需要对数据通路中的哪些阶段进行修改呢? 答:因为 ans = a % b 是两个源操作数寄存器和一个目的寄存器的类型的指令,所以可以直接借用 R-type 指令的数据通路,因此只需要对译码过程和 ALU 进行修改,也就是添加 ans = a % b 指令的译码、并在 ALU 中添加该指令的请求和实际运算的实现。 |
本帖最后由 Doreen 于 2020-8-21 11:16 编辑 第五讲 1. 跟 Cache 相比,TCM 容量可以做很大吗? 答:Cache 是一种高速缓存,而 TCM 是为了弥补 Cache 访问的不确定性,而增加的片上高速存储器;TCM 的性能和 Cache 的性能相当,二者的速度都比较快,一般是用 SRAM 来实现,而 SRAM 的集成度较低,与 DRAM 相比,相同容量的 SRAM 他的体积要大很多,而且价格比较高,所以 TCM 和 Cache 都不会做很大。 2.段表和页表都是必须的吗,还是选择其一就可以? 答:段表和页表都是虚拟地址到物理地址转换的映射表,段表是分段管理中虚拟地址到物理地址转换关系的表,而页表是分页管理中地址转换关系的表;分段管理和分页管理是两种不同的管理方式,可以按照情况选用其一即可。 3. 为什么 ITCM 和 DTCM 的位宽设置的不一样,一个是 64 位的,一个是 32 位的? 答:E203 将 ITCM 设置为 64 位的原因是,假如连续取两次 32 位的指令时,只需要发起一次 ITCM 读取,更省功耗。 4. 在 ITCM_CTRL 和 DTCM_CTRL 中都用了仲裁器,这个仲裁器的作用是什么? 答:仲裁器是为了仲裁不同 master 发起的访问,这些访问会有 IFU 发起的、预留的 external 发起的、LSU 发起的;比如假设 IFU/LSU 同时都访问 ITCM,由于 LSU是在 IFU 阶段之后的,那 LSU 执行的指令肯定是在 IFU 执行的指令之前的,所以 LSU 总线的优先级就会高于 IFU 总线。 5. QSPI0 Flash 是怎样连接到系统总线的,从 QSPI0 Flash 中读出一个指令的延迟会不会很长? 答:IFU/LSU 都可以访问 BIU,而 BIU 通过如下通道来访问 QSPI0 Flash:BIU总线 -> BIU 的存储器总线 -> icb 1to8 分发器 -> QSPI0 Flash; QSPI0 Flash 有 XIP(eXecute In Place,芯片内执行) 模式,可以直接在 Flash 中运行代码;也可以先把代码搬到 ITCM 中,这样就效率高些了;一般情况下,QSPI0 Flash 只用作固化代码。 |
第三讲 1. RISC-V架构跟MIPS架构是否很相似? 答:是的,RISC-V 跟MIPS 虽然是不同的指令架构,但是都是精简指令集,是有一定相似性的。RISC-V是基于前面众多指令集架构而设计优化出来的,具体差异可以阅读 大卫.帕特森等人撰写的《计算机组成与设计》的两个版本(分别为 mips版和RISC-V版)的书。 2. 为什么数据通路的下一PC值是+4 而不是+1呢? 答:存储器以字节为单位编址,32位指令的一条指令是四字节。需要说明的是RISC-V 也可以支持压缩指令集, 压缩指令集的指令编码是16位,这时下一PC值是+2。 3. 对于单指令周期的数据通路,指令需要几个周期完成? 答:单指令周期中,每个指令是在一个周期内完成。因为时钟周期对所有指令等长,因此时钟周期要由执行时间最长的那条指令决定,以此确保每条指令在一个周期内都能完成。相较于流水线,单指令周期的时钟频率会比较低。 4.第三讲讲解的代码是将E203改成了单周期吗? 答:本讲讲的是单指令周期数据通路,不过代码解析用的是E203的二级流水线的代码,这是因为单指令周期数据通路和流水线数据通路基本类似,为了保证课程的连贯性,所以直接拿E203的二级流水线代码进行讲解的。 5.本讲中提到部分指令不需要完整指令流程,所以这时不参与的模块控制信号为高阻态吗? 答:有些指令不需要所有的模块参与,这时候不参与的模块的控制信号是 dont care 的,控制信号 可以是0或1 。但是在FPGA内部信号一般要避免高阻态,严谨的说法确实是 dont care。 6. 为什么J-type指令会有写回PC+4的操作呢? 答:这个是RISC-V 架构指令集定义的,可以直接参阅RISC-V基金会网站的riscv-spec文档里面的定义。文档我们也有上传到 http://www.myfpga.org/discuz/for ... &extra=page%3D1。 |
Powered by Discuz! X3
© 2001-2013 Comsenz Inc.