memory - Chisel - 内存初始化
问题描述
在凿子中初始化内存的最佳方法是实现一个for
循环来写入它吗?
is(s_multiplier){
when(ready){state := s_ready}
// Initialization of C memory to 0
for(i <- 0 to matrixSize - 1){
for(j <- 0 to matrixSize - 1){
memC.write(i + j, 0.asSInt((2 * cellSize).W))
}
}
解决方案
使用 for 循环的缺点是上述代码将尝试在一个时钟周期内执行嵌套的 for 循环,这是不切实际的,因为通常最好的情况是每个时钟周期执行一次写入或使用突发模式机制。我建议将 i 和 j 替换为在时钟滴答声中递增的计数器,并保持 s_multiplier 状态,直到你填满你的矩阵。
is(s_multiplier){
when(ready){state := s_ready}
// Initialization of C memory to 0
when(counti <= matrixSize -1){ //Initialize counti and countj to 0
when(countj <= matrixSize - 1){
memC.write(counti + countj, 0.asSInt((2 * cellSize).W))
countj := countj + 1.U
}
counti <= counti + 1.U
state := s_multiplier
}. otherwise{state := S_go_to_some_other_state}
推荐阅读
- python - 如何选择数据帧上的值以匹配重复 ID 的某些字符串为条件?
- r - 使用 2 个变量在 geom_dotplot 中排序
- google-classroom - Google 课堂分享按钮:我无法选择课程
- php - 如何获取具有数组值的变量变量
- android - 视图分页器内的 RecyclerView
- c# - .NET Core - ILoggerFactory 如何注入?
- r - 根据列中的条件将值(源自配置表)分配给组
- javascript - 未能在 PHP 文件中集成一些 JS 代码
- typescript - TypeScript - 使用“as”运算符转换后破坏数组导致编译错误:预期表达式
- python - 文本相似性方法不反映文本之间的“真实”相似性