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.pswp.cn/web/87886.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/87886.shtml
英文地址,请注明出处:http://en.pswp.cn/web/87886.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IO进程线程(IPC通讯)

目录 一、IPC通讯机制 1&#xff09;传统的通讯机制&#xff1a; 2&#xff09;systemV 的通讯机制&#xff1a; 3&#xff09;跨主机的通讯机制&#xff1a; 1、无名管道 1&#xff09;无名管道的概念 2&#xff09;无名管道的函数 3&#xff09;无名管道通讯&#xf…

Webpack 5 核心机制详解与打包性能优化实践

&#x1f916; 作者简介&#xff1a;水煮白菜王&#xff0c;一个web开发工程师 &#x1f47b; &#x1f440; 文章专栏&#xff1a; 前端专栏 &#xff0c;记录一下平时在博客写作中&#xff0c;总结出的一些开发技巧和知识归纳总结✍。 感谢支持&#x1f495;&#x1f495;&am…

Manus AI与多语言手写识别

技术文章大纲&#xff1a;Manus AI与多语言手写识别 引言 手写识别技术的发展背景与市场需求Manus AI的定位与核心技术优势多语言场景下的挑战与机遇 Manus AI的核心技术架构 基于深度学习的端到端手写识别模型多模态数据融合&#xff08;笔迹压力、书写轨迹等&#xff09;…

Go与Python爬虫对比及模板实现

go语言和Python语言都可选作用来爬虫项目&#xff0c;因为python经过十几年的累积&#xff0c;各种库是应有尽有&#xff0c;学习也相对比较简单&#xff0c;相比GO起步较晚还是有很大优势的&#xff0c;么有对比就没有伤害&#xff0c;所以我利用一个下午&#xff0c;写个Go爬…

Vidwall: 支持将 4K 视频设置为动态桌面壁纸,兼容 MP4 和 MOV 格式

支持将 4K 视频设置为动态桌面壁纸&#xff0c;兼容 MP4 和 MOV 格式。只需将视频拖入应用界面&#xff0c;点击即可立即应用为桌面背景。 为桌面增添生动趣味的动态壁纸效果&#xff01;录制视频时设置动态背景&#xff0c;也能让画面更吸引人。 &#x1f4e5; https://apps.…

【LeetCode 热题 100】234. 回文链表——快慢指针+反转链表

Problem: 234. 回文链表 题目&#xff1a;给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 文章目录 整体思路完整代码时空复杂度时间复杂度&#xff1a;O(N)空间复杂度&#…

【源力觉醒 创作者计划】开源、易用、强中文:文心一言4.5或是 普通人/非AI程序员 的第一款中文AI?

前言 你有没有发现&#xff0c;AI 正在悄悄渗透进我们的生活&#xff1a;写文案、画插图、做PPT、答作业&#xff0c;它几乎无所不能&#x1f60d; &#xff01;但很多人可能会问&#xff1a; AI&#xff0c;我能用吗&#xff1f;用得起吗&#xff1f;适合我吗&#xff1f;特别…

【保姆级喂饭教程】Git图形化客户端Sourcetree安装及使用教程

目录 前言一、SourceTree简介二、安装教程三、使用教程1. 添加仓库 四、评价总结后记参考文献 前言 在查找Git Flow实现工具的时候&#xff0c;看到了SourceTree&#xff0c;支持Git Flow、GitHub Flow等多种Git工作流&#xff0c;安装简单学习一下。 一、SourceTree简介 Git的…

【kafka】kafka3.3.2常用命令

查看kafka服务版本 [rootlocalhost eicar]# kafka-server-start.sh --version [2025-06-23 11:10:54,106] INFO Registered kafka:typekafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$) 3.3.2 (Commit:b66af662e61082cb) [rootlocalhost eicar]#查看消…

LastActivityView -查看电脑上的所有操作记录

LastActivityView 是一款由 NirSoft 开发的免费工具&#xff0c;适用于 Windows 操作系统。它能够通过分析系统日志、Prefetch 文件、图标缓存数据库、注册表以及蓝屏 Dump 文件等多种来源&#xff0c;综合展示电脑从安装系统至今的所有操作记录。 LastActivityView 的功能 L…

English Practice - Day 3

Hi ChatGPT, I am back. can we start today’s english practice? Welcome back, Kelly! &#x1f60a; Yes — let’s begin today’s English practice! You’re doing great by showing up consistently. &#x1f4aa; Q&#xff1a; What’s the weather like today w…

quickbi看板内嵌入powerbi页面(含单点登录解决方法)

quickbi看板内嵌入powerbi页面&#xff08;含单点登录解决方法&#xff09; 实现步骤 要实现在quickbi看板中嵌入powerbi页面&#xff0c;分4步来实现。 1. 新建quickbi看板&#xff0c; 2. 添加内嵌页面 3. 获取Powerbi链接 4. 将powerbi链接粘贴到内嵌页面中 第一步&am…

CentOS-6如何配置网络设置IP? 笔记250706

CentOS-6如何配置网络设置IP? 笔记250706 1️⃣ 参考 1 CentOS 6 网络配置完全指南 在 CentOS 6 中配置网络设置主要涉及修改 /etc/sysconfig/network-scripts/ 目录下的配置文件。以下是详细配置步骤&#xff1a; 一、配置静态 IP 地址 1. 编辑网卡配置文件 vi /etc/sys…

WPF学习笔记(24)命令与ICommand接口

命令与ICommand接口一、命令1. ICommandSource2. 示例3. CommandBinding二、ICommand1.ICommand接口2. ICommand用法3. CanExecute总结一、命令 官方文档&#xff1a;https://learn.microsoft.com/zh-cn/dotnet/desktop/wpf/advanced/commanding-overview 1. ICommandSource 官…

TCP长连接保持在线状态

TCP长连接是指在一次TCP连接建立后&#xff0c;保持连接状态较长时间&#xff0c;用于多次数据传输&#xff0c;而不是每次通信后立即断开。这种机制对于需要频繁通信的应用非常重要。 保持TCP长连接在线的方法 1. 心跳机制(Heartbeat) 实现原理&#xff1a;定期发送小数据包…

华为OD机试 2025B卷 - 报文响应时间 (C++ Python JAVA JS C语言)

2025B卷目录点击查看: 华为OD机试2025B卷真题题库目录|机考题库 + 算法考点详解 2025B卷 100分题型 题目描述 IGMP 协议中,有一个字段称作最大响应时间 (Max Response Time) ,HOST收到查询报文,解折出 MaxResponsetime 字段后,需要在 (0,MaxResponseTime] 时间 (s) 内选…

深入理解微服务中的服务注册与发现(Consul)

在当今数字化浪潮下&#xff0c;微服务架构凭借其高内聚、低耦合的特性&#xff0c;成为众多企业构建复杂应用系统的首选方案。然而&#xff0c;随着服务数量的不断增加&#xff0c;服务之间的调用与管理变得愈发复杂。这时&#xff0c;服务注册与发现就如同微服务架构中的 “导…

Zephyr【2】-----内核调度[1]

内核调度 Zephyr 内核的调度器是基于什么原则选择当前执行线程的&#xff1f; 总是选择优先级最高的就绪线程作为当前线程。 当多个线程优先级相同时&#xff0c;调度器会如何选择&#xff1f; 线程的 “就绪状态” 和 “非就绪状态” 分别指什么&#xff1f;哪些情况会导致…

LangChain内置工具包和联网搜索

目录 一、什么是智能体?工具包又是什么&#xff1f; 二、智能体(Agent)的出现是为了解决哪些问题&#xff1f; 三、LangChain里面创建工具方式 3.1 tool 装饰器&#xff1a;用来定义一个简单的工具函数,, 可以直接给函数加上这个装饰器&#xff0c;让函数成为可调用的工具…

用c++做游戏开发至少要掌握哪些知识?

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于用C做游戏开发的相关内容&#xff01; 关…