当前位置: 首页 > news >正文

循环移位网络设计

  1. 总体架构
    1. 模块描述

循环移位网络模块(模块名:VAL_CS_PROC),对输入数据(in_data)做循环移位处理,两个cycle即可输出数据。

Fig 1 循环移位模块顶层

      1. 设计要求
  1. 00】 支持对data_num个有效数据做循环移位处理,每个数据位宽为10bit1<=data_num<=384);移位值shift_val满足0<=shift_val<=data_numshift_val表示循环移位的数据个数(每个数据10bit)。
  2. 01】 输入和输出数据位宽为384*10bit,当有效数据个数data_num小于等于192时,输入数据中包含2data_num个数据,支持同时对2data_num个数据做循环移位处理,且两组处理相互独立,可以不同步。
  3. 02】 有效数据个数data_num大于192时,data_num个有效数据放在输入输出数据的低位([data_num*10-1 : 0]);有效数据个数data_num小于等于192时,有效数据分别在2组数据的低位([data_num*10-1 : 0][data_num *10+1920-1 : 1920])。
  4. 03】 支持根据输入指示信号判断数据左移或是右移。
  5. 04】 移位值、有效数据个数、移位方向以in_vld为随路有效信号,in_vld1表示参数有效,输入数据固定在参数下一拍到来。
  6. 05】 支持输出循环移位后数据以out_vld作为随路有效信号,out_vld1表示数据有效,data_num大于192时,两组out_vld同时拉高表示数据有效。
  7. 06】 输出时,无效位需要全部为零。
      1. 整体架构

Fig 2 循环移位网络模块架构框图

      1. 端口信号

Table 1 端口信号表

端口

方向

位宽/bit

说明

rst_n

输入

1

复位信号,低有效

clk

输入

1

输入时钟

in_vld_0

输入

1

第一组输入参数随路有效指示

in_vld_1

输入

1

第二组输入参数随路有效指示

data_num_0[8:0]

输入

9

第一组有效数据个数,in_vld_0=1时有效

data_num_1[8:0]

输入

9

第二组有效数据个数,in_vld_1=1时有效

val_r_l_ind_0

输入

1

第一组左移右移指示,为1时表示左移(即向高位移位),为0时表示右移(即向低位移位),in_vld_0=1时有效

val_r_l_ind_1

输入

1

第二组左移右移指示,为1时表示左移(即向高位移位),为0时表示右移(即向低位移位),in_vld_1=1时有效

shift_value_0[8:0]

输入

9

第一组循环移位数据个数

shift_value_1 [8:0]

输入

9

第二组循环移位数据个数

in_data[384*10-1:0]

输入

3840

输入数据,in_vld下一拍有效

out_vld_0

输出

1

第一组输出数据随路有效指示,

out_vld_1

输出

1

第二组输出数据随路有效指示

out_data[384*10-1:0]

输出

3840

输出数据,out_vld当拍有效

    1. 接口时序
      1. 寄存时序图

由Fig3可见,框图中参与移位的输入信号都是寄存后使用。

Fig 3 寄存时序图

      1. 输出时序图

Fig 4可以得到(in_vld 到 out_vld,含regin/regout)性能为2 cycle。

Fig 4 输出时序图

  1. barrel_shifter子模块详细设计
    1. barrel_shifter子模块描述

这个架构实现了高效的对数移位结构,通过多级移位器实现任意位移量,同时保持O(log n)的时间复杂度。参数化设计使其能适应不同数据规模和位宽需求。

  1. 对数移位架构:
  1. 将大位移分解为$clog2(MAX_NUM)级(log₂384 ≈ 8.6 → 9级);
  2. 每级处理2的幂次方位移(1, 2, 4...256个数据项);
  3. 每级仅需1MUX选择器,大幅降低逻辑深度;
  1. 并行处理:
  1. 左移和右移操作独立并行处理;
  2. 每级内所有数据通道并行计算;
  3. 关键路径:$clog2(MAX_NUM)MUX + 1OR + 1AND(远远小于30级逻辑);

Fig 5 barrel_shifter架构图

  1. 功能仿真

Table 2 功能仿真测试表

测试案例

方案描述

是否通过

TEST1

data_num = 8,数据通道0,左移2

通过

TEST2

data_num = 8,数据通道0,右移2

通过

TEST3

data_num = 8,数据通道1,左移2

通过

TEST4

data_num = 8,数据通道1,右移2

通过

TEST5

data_num = 8,数据通道01同时独立输入,通道0:右移3位,通道1:左移2

通过

TEST6

data_num = 200,数据通道1,2约束一致,左移50

通过

TEST7

边界测试:data_num = 1,数据通道1,左移2

通过

  1. PPA优化

Table 3 180nm工艺库PPA测试表

类别

Ax(um^2)

数据延迟

最小面积

6083924.000000

2 cycle

http://www.lryc.cn/news/582189.html

相关文章:

  • ubuntu server系统 安装宝塔
  • 【build.gradle中的各种jdk或者是jvm,sdk版本作用区别,详细说明】
  • RKAndroid11-系统设置新增开关选项
  • Kotlin流操作符简介
  • 力扣网编程274题:H指数之计数排序(中等)
  • 分布式推客系统架构设计:从微服务到高性能计算的实践路径
  • 安装 Elasticsearch IK 分词器
  • Coco AI 实战(一):Coco Server Linux 平台部署
  • 前端技术博客汇总文档
  • 万物智联时代启航:鸿蒙OS重塑全场景开发新生态
  • 【读代码】深度解析TEN VAD:实时语音活动检测的高性能开源解决方案
  • 一份激光雷达农业数据的分析
  • 【Linux | 网络】网络编程套接字
  • [netty5: LifecycleTracer ResourceSupport]-源码分析
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ContentPlaceholder(背景占位)
  • 什么是Web3?金融解决方案
  • 康布雷时刻:AI革命中的领导力觉醒与组织重构
  • uniapp下拉刷新+分页组件(z-paging 组件)
  • 2. 你可以说一下 http 版本的发展过程吗
  • 选择排序算法详解(含Python实现)
  • CentOS-7-x86_64解决:使用NAT模式无法ping通www.baidu.com或无法ping 8.8.8.8问题。
  • 阿里arthas(阿尔萨斯)简介
  • 安卓10.0系统修改定制化____recovery-from-boot.p文件的具体作用 在定制项目中的关联
  • v-for的用法及案例
  • 股票筹码分布及其数据获取
  • Swift 解 LeetCode 320:一行单词有多少种缩写可能?用回溯找全解
  • 深入解析TCP:可靠传输的核心机制与实现逻辑(三次握手、四次挥手、流量控制、滑动窗口、拥塞控制、慢启动、延时应答、面向字节流、粘包问题)
  • 沉浸式视频的未来:MV-HEVC与3D-HEVC技术深度解析
  • 【STM32】const 变量存储学习笔记
  • 6,Receiving Messages:@KafkaListener Annotation