该算法采用双调排序算法,是一种可流水的递推算法,且算法的消耗时长可算,具体细节参考视频:

https://www.bilibili.com/video/BV1S3thzWEnh/?spm_id_from=333.1387.homepage.video_card.click&vd_source=69fb997b62efa60ae1add8b53b6a5923

module bitonic_sort(input						i_clk	,input						i_rst	,input		[16 * 16 - 1:0]	i_buff	,output		[16 * 16 - 1:0]	o_buff);localparam WIN = 16;wire	signed	[15:0]	w_data_buff	[0:15];genvar i;genvar j;generatefor(i = 0; i < 16; i = i + 1) beginassign w_data_buff[i] = i_buff[i * 16 + 15:i * 16];endendgenerate/*双调排序:Bitonic 首先将相邻两个元素作为一个数组:(0,1)(2,3)(4,5)(6,7)(8,9)(10,11)(12,13)(14,15)将其按照顺序、逆序交替排序,并两个相邻数组组成一个四元素的双调数组(0,1,2,3)(4,5,6,7)(8,9,10,11)(12,13,14,15)通过对每个四元素数组进行2、1间隔排序,使四元素数组按照顺序、逆序交替排序,并两个相邻数组组成一个8元素数组(0,1,2,3,4,5,6,7)(8,9,10,11,12,13,14,15)对每个8元素数组进行4、2、1间隔排序,使其按照顺序、逆序交替排序,最终组成16元素的回调数组(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)对回调数组按照8、4、2、1间隔排序,完成顺序或逆序排列*/reg	signed	[15:0]	r_bitonic_pipe0	[0:WIN - 1];//间隔1generatefor(i = 0; i < WIN / 4; i = i + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe0[i * 4] 	<= 'd0;r_bitonic_pipe0[i * 4 + 1]<= 'd0;endelse beginif(w_data_buff[i * 4] > w_data_buff[i * 4 + 1]) begin//升序r_bitonic_pipe0[i * 4] 		<= w_data_buff[i * 4 + 1];r_bitonic_pipe0[i * 4 + 1]	<= w_data_buff[i * 4];endelse beginr_bitonic_pipe0[i * 4] 		<= w_data_buff[i * 4];r_bitonic_pipe0[i * 4 + 1]	<= w_data_buff[i * 4 + 1];endendendalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe0[i * 4 + 2]<= 'd0;r_bitonic_pipe0[i * 4 + 3]<= 'd0;endelse beginif(w_data_buff[i * 4 + 2] < w_data_buff[i * 4 + 3]) begin//降序r_bitonic_pipe0[i * 4 + 2]<= w_data_buff[i * 4 + 3];r_bitonic_pipe0[i * 4 + 3]<= w_data_buff[i * 4 + 2];endelse beginr_bitonic_pipe0[i * 4 + 2]<= w_data_buff[i * 4 + 2];r_bitonic_pipe0[i * 4 + 3]<= w_data_buff[i * 4 + 3];endendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe1	[0:WIN - 1];//间隔2generatefor(i = 0; i < WIN / 8; i = i + 1) beginfor(j = 0; j < WIN / 8; j = j + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe1[i * 8 + j] 	<= 'd0;r_bitonic_pipe1[i * 8 + j + 2]<= 'd0;endelse beginif(r_bitonic_pipe0[i * 8 + j] > r_bitonic_pipe0[i * 8 + j + 2]) begin//升序r_bitonic_pipe1[i * 8 + j]		<= r_bitonic_pipe0[i * 8 + j  + 2];r_bitonic_pipe1[i * 8 + j + 2]	<= r_bitonic_pipe0[i * 8 + j];endelse beginr_bitonic_pipe1[i * 8 + j]		<= r_bitonic_pipe0[i * 8 + j];r_bitonic_pipe1[i * 8 + j + 2]	<= r_bitonic_pipe0[i * 8 + j + 2];				endendendalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe1[i * 8 + j + 4]<= 'd0;r_bitonic_pipe1[i * 8 + j + 6]<= 'd0;endelse beginif(r_bitonic_pipe0[i * 8 + j + 4] < r_bitonic_pipe0[i * 8 + j + 6]) begin//降序r_bitonic_pipe1[i * 8 + j + 4]<= r_bitonic_pipe0[i * 8 + j + 6];r_bitonic_pipe1[i * 8 + j + 6]<= r_bitonic_pipe0[i * 8 + j + 4];endelse beginr_bitonic_pipe1[i * 8 + j + 4]<= r_bitonic_pipe0[i * 8 + j + 4];r_bitonic_pipe1[i * 8 + j + 6]<= r_bitonic_pipe0[i * 8 + j + 6];				endendendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe2	[0:WIN - 1];generatefor(i = 0; i < WIN / 8; i = i + 1) beginfor(j = 0; j < WIN / 8; j = j + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe2[i * 8 + j * 2] 		<= 'd0;r_bitonic_pipe2[i * 8 + j * 2 + 1] 	<= 'd0;endelse beginif(r_bitonic_pipe1[i * 8 + j * 2] > r_bitonic_pipe1[i * 8 + j * 2 + 1]) begin//升序r_bitonic_pipe2[i * 8 + j * 2]		<= r_bitonic_pipe1[i * 8 + j * 2+ 1];r_bitonic_pipe2[i * 8 + j * 2 + 1]	<= r_bitonic_pipe1[i * 8 + j * 2];endelse beginr_bitonic_pipe2[i * 8 + j * 2]		<= r_bitonic_pipe1[i * 8 + j * 2];r_bitonic_pipe2[i * 8 + j * 2 + 1]	<= r_bitonic_pipe1[i * 8 + j * 2 + 1];endendendalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe2[i * 8 + j * 2 + 4]	<= 'd0;r_bitonic_pipe2[i * 8 + j * 2 + 5]	<= 'd0;endelse beginif(r_bitonic_pipe1[i * 8 + j * 2 + 4] < r_bitonic_pipe1[i * 8 + j * 2 + 5]) begin//降序r_bitonic_pipe2[i * 8 + j * 2 + 4]	<= r_bitonic_pipe1[i * 8 + j * 2 + 5];r_bitonic_pipe2[i * 8 + j * 2 + 5] 	<= r_bitonic_pipe1[i * 8 + j * 2 + 4];endelse beginr_bitonic_pipe2[i * 8 + j * 2 + 4]	<= r_bitonic_pipe1[i * 8 + j * 2 + 4];r_bitonic_pipe2[i * 8 + j * 2 + 5]	<= r_bitonic_pipe1[i * 8 + j * 2 + 5];endendendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe3	[0:WIN - 1];//间隔4generatefor(i = 0; i < WIN / 4; i = i + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe3[i]	<= 'd0;r_bitonic_pipe3[i + 4]<= 'd0;endelse beginif(r_bitonic_pipe2[i] > r_bitonic_pipe2[i + 4]) begin//升序r_bitonic_pipe3[i]		<= r_bitonic_pipe2[i + 4];r_bitonic_pipe3[i + 4]	<= r_bitonic_pipe2[i];endelse beginr_bitonic_pipe3[i]		<= r_bitonic_pipe2[i];r_bitonic_pipe3[i + 4]	<= r_bitonic_pipe2[i + 4];endend	endalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe3[i + 8] <= 'd0;r_bitonic_pipe3[i + 12]<= 'd0;endelse beginif(r_bitonic_pipe2[i + 8] < r_bitonic_pipe2[i + 12]) begin//降序r_bitonic_pipe3[i + 8] <= r_bitonic_pipe2[i + 12];r_bitonic_pipe3[i + 12]<= r_bitonic_pipe2[i + 8];endelse beginr_bitonic_pipe3[i + 8] <= r_bitonic_pipe2[i + 8];r_bitonic_pipe3[i + 12]<= r_bitonic_pipe2[i + 12];endendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe4	[0:WIN - 1];//间隔2generatefor(i = 0; i < WIN / 8; i = i + 1) beginfor(j = 0; j < WIN / 8; j = j + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe4[i * 4 + j] 		<= 'd0;r_bitonic_pipe4[i * 4 + j + 2]	<= 'd0;endelse beginif(r_bitonic_pipe3[i * 4 + j] > r_bitonic_pipe3[i * 4 + j + 2]) beginr_bitonic_pipe4[i * 4 + j] 		<= r_bitonic_pipe3[i * 4 + j + 2];r_bitonic_pipe4[i * 4 + j + 2]	<= r_bitonic_pipe3[i * 4 + j];endelse beginr_bitonic_pipe4[i * 4 + j] 		<= r_bitonic_pipe3[i * 4 + j];r_bitonic_pipe4[i * 4 + j + 2]	<= r_bitonic_pipe3[i * 4 + j + 2];endendendalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe4[i * 4 + j + 8]	<= 'd0;r_bitonic_pipe4[i * 4 + j + 10]	<= 'd0;endelse beginif(r_bitonic_pipe3[i * 4 + j + 8] < r_bitonic_pipe3[i * 4 + j + 10]) beginr_bitonic_pipe4[i * 4 + j + 8]	<= r_bitonic_pipe3[i * 4 + j + 10];r_bitonic_pipe4[i * 4 + j + 10]	<= r_bitonic_pipe3[i * 4 + j + 8];endelse beginr_bitonic_pipe4[i * 4 + j + 8] 	<= r_bitonic_pipe3[i * 4 + j + 8];r_bitonic_pipe4[i * 4 + j + 10]	<= r_bitonic_pipe3[i * 4 + j + 10];endendendend		endendgeneratereg	signed	[15:0]	r_bitonic_pipe5	[0:WIN - 1];//间隔1generatefor(i = 0; i < WIN / 4; i = i + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe5[i * 2]		<= 'd0;r_bitonic_pipe5[i * 2 + 1]	<= 'd0;endelse beginif(r_bitonic_pipe4[i * 2] > r_bitonic_pipe4[i * 2 + 1]) beginr_bitonic_pipe5[i * 2]		<= r_bitonic_pipe4[i * 2 + 1];r_bitonic_pipe5[i * 2 + 1]	<= r_bitonic_pipe4[i * 2];endelse beginr_bitonic_pipe5[i * 2]		<= r_bitonic_pipe4[i * 2];r_bitonic_pipe5[i * 2 + 1]	<= r_bitonic_pipe4[i * 2 + 1];endendendalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe5[i * 2 + 8]	<= 'd0;r_bitonic_pipe5[i * 2 + 9]	<= 'd0;endelse beginif(r_bitonic_pipe4[i * 2 + 8] < r_bitonic_pipe4[i * 2 + 9]) beginr_bitonic_pipe5[i * 2 + 8]	<= r_bitonic_pipe4[i * 2 + 9];r_bitonic_pipe5[i * 2 + 9]	<= r_bitonic_pipe4[i * 2 + 8];endelse beginr_bitonic_pipe5[i * 2 + 8]	<= r_bitonic_pipe4[i * 2 + 8];r_bitonic_pipe5[i * 2 + 9]	<= r_bitonic_pipe4[i * 2 + 9];endendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe6	[0:WIN - 1];//间隔8generatefor(i = 0; i < WIN / 2; i = i + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe6[i]		<= 'd0;r_bitonic_pipe6[i + 8]	<= 'd0;endelse beginif(r_bitonic_pipe5[i] > r_bitonic_pipe5[i + 8]) beginr_bitonic_pipe6[i]		<= r_bitonic_pipe5[i + 8];r_bitonic_pipe6[i + 8]	<= r_bitonic_pipe5[i];endelse beginr_bitonic_pipe6[i]		<= r_bitonic_pipe5[i];r_bitonic_pipe6[i + 8]	<= r_bitonic_pipe5[i + 8];endendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe7	[0:WIN - 1];//间隔4generatefor(i = 0; i < WIN / 8; i = i + 1) beginfor(j = 0; j < WIN / 4; j = j + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe7[i * 8 + j]		<= 'd0;r_bitonic_pipe7[i * 8 + j + 4]	<= 'd0;endelse beginif(r_bitonic_pipe6[i * 8 + j] > r_bitonic_pipe6[i * 8 + j + 4]) beginr_bitonic_pipe7[i * 8 + j]		<= r_bitonic_pipe6[i * 8 + j + 4];r_bitonic_pipe7[i * 8 + j + 4]	<= r_bitonic_pipe6[i * 8 + j];endelse beginr_bitonic_pipe7[i * 8 + j]		<= r_bitonic_pipe6[i * 8 + j]	;r_bitonic_pipe7[i * 8 + j + 4]	<= r_bitonic_pipe6[i * 8 + j + 4];endendendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe8	[0:WIN - 1];//间隔2generatefor(i = 0; i < WIN / 4; i = i + 1) beginfor(j = 0; j < WIN / 8; j = j + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe8[i * 4 + j]		<= 'd0;r_bitonic_pipe8[i * 4 + j + 2]	<= 'd0;endelse beginif(r_bitonic_pipe7[i * 4 + j] > r_bitonic_pipe7[i * 4 + j + 2]) beginr_bitonic_pipe8[i * 4 + j]		<= r_bitonic_pipe7[i * 4 + j + 2];r_bitonic_pipe8[i * 4 + j + 2]	<= r_bitonic_pipe7[i * 4 + j];endelse beginr_bitonic_pipe8[i * 4 + j]		<= r_bitonic_pipe7[i * 4 + j]	;r_bitonic_pipe8[i * 4 + j + 2]	<= r_bitonic_pipe7[i * 4 + j + 2];endendendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe9	[0:WIN - 1];//间隔1generatefor(i = 0; i < WIN / 2; i = i + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe9[i * 2]		<= 'd0;r_bitonic_pipe9[i * 2 + 1]	<= 'd0;endelse beginif(r_bitonic_pipe8[i * 2] > r_bitonic_pipe8[i * 2 + 1]) beginr_bitonic_pipe9[i * 2]		<= r_bitonic_pipe8[i * 2 + 1];r_bitonic_pipe9[i * 2 + 1]	<= r_bitonic_pipe8[i * 2];endelse beginr_bitonic_pipe9[i * 2]		<= r_bitonic_pipe8[i * 2]	;r_bitonic_pipe9[i * 2 + 1]	<= r_bitonic_pipe8[i * 2 + 1];endendendendendgenerate	generatefor(i = 0; i < 16; i = i + 1) beginassign	o_buff[i * 16 + 15:i * 16] = r_bitonic_pipe9[i];endendgenerateendmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95846.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95846.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/95846.shtml

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

相关文章

平衡车 -- MPU6050

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 传感器原理 此外&#xff0c;用陀螺仪获取x,y,z轴的加速度。 初始化 我们现在对MPU6050进行初始化&#xff0c;MPU6050通过I2C总线与单片机进行通信&#xff0c;通过的是PB8和PB…

在电路浪涌测试中,TVS(瞬态电压抑制二极管)的防护效果确实会受到陪测设备中去耦网络(Decoupling Network,DN)的显著影响

在电路浪涌测试中&#xff0c;TVS&#xff08;瞬态电压抑制二极管&#xff09;的防护效果确实会受到陪测设备中去耦网络&#xff08;Decoupling Network&#xff0c;DN&#xff09;的显著影响&#xff0c;这一现象与浪涌能量的传递路径、阻抗匹配及信号完整性密切相关。结合 AD…

Redis之分布式锁与缓存设计

1、分布式锁 1.1、超卖问题/*** 存在库存超卖的不安全问题*/private void deductStock() {int stockTotal Integer.parseInt(stringRedisTemplate.opsForValue().get("stock"));if (stockTotal > 0) { // 这里存在多个线程、进程同时判断通过&#xff0c;然后超买…

静态住宅IP的特点

稳定性高&#xff1a;与动态IP地址相比&#xff0c;静态住宅IP不会不定时变更&#xff0c;能确保业务在网络环境中的一致性和连贯性&#xff0c;适合需要长期维持同一身份的场景&#xff0c;如跨境电商业务等3。安全性强&#xff1a;由于其住宅属性&#xff0c;看起来更像是正常…

Linux 编译 Android 版 QGroundControl 软件并运行到手机上

Linux 编译 Android 版 QGroundControl 软件并运行到手机上环境说明操作步骤一、参考上一篇文章在电脑端把环境搭建好二、配置 Qt Creator 的 Android 环境环境说明 电脑系统 Ubuntu 22.04 qgroundcontrol master 分支 Qt 6.8.3 操作步骤 一、参考上一篇文章在电脑端把环境搭…

Python 2025:量化金融与智能交易的新纪元

当Python遇见金融大数据&#xff0c;算法交易正迎来前所未有的技术变革在2025年的技术浪潮中&#xff0c;Python已经从一个"胶水语言"蜕变为金融科技领域的核心驱动力。根据GitHub 2025年度报告&#xff0c;Python在量化金融项目中的使用率增长了217%&#xff0c;在对…

[论文阅读] 人工智能 + 软件工程 | TDD痛点破解:LLM自动生成测试骨架靠谱吗?静态分析+专家评审给出答案

TDD痛点破解&#xff1a;LLM自动生成测试骨架靠谱吗&#xff1f;静态分析专家评审给出答案 论文信息项目详情论文原标题Evaluation of Large Language Models for Generating RSpec Test Skeletons in Ruby on Rails论文链接https://arxiv.org/pdf/2509.04644一段话总结 该研究…

开源PSS解析器1

本章介绍另一个开源PSS解析工具zuspec&#xff1a; zuspec 提供了一组用于处理 actions relationship level 的工具 &#xff08;ARL&#xff09; 模型&#xff0c;主要是使用 Accellera 便携式测试和刺激 &#xff08;PSS&#xff09; 语言描述的模型。ARL 模型用于为数字设计…

26考研——内存管理_内存管理策略(3)

408答疑 文章目录一、内存管理策略1、内存管理的基本原理和要求1.1、相关概念1.2、逻辑地址与物理地址1.3、程序的链接与装入1.4、进程的内存映像1.5、内存保护1.6、内存共享1.7、内存分配与回收1.8、在存储管理中涉及到两个问题2、连续分配管理方式2.1、相关概念2.2、单一连续…

Python爬虫实战:研究Event Handling机制,构建在线教育平台的课程数据采集和分析系统

1. 引言 1.1 研究背景与意义 在大数据时代,互联网作为全球最大的信息载体,蕴含着海量有价值的数据。这些数据涵盖了商业交易、用户行为、社会趋势等多个领域,对企业决策、学术研究和社会管理具有重要参考价值。如何高效、准确地获取这些数据并进行深度分析,成为当前数据科…

docker 安装 redis 并设置 volumes 并修改 修改密码(四)

设置新密码: 127.0.0.1:6379> CONFIG SET requirepass newpassword OK验证新密码: 127.0.0.1:6379> AUTH newpassword OK更新配置文件: 编辑主机的配置文件/data/redis/conf/redis.conf,将requirepass的值修改为新密码: requirepass newpassword重启容器以使配置…

NBA球星知识大挑战:基于 PyQt5 的球星认识小游戏

NBA球星知识大挑战&#xff1a;基于 PyQt5 的球星认识小游戏 代码详见&#xff1a;https://github.com/xiaozhou-alt/NBA_Players_Recognition 文章目录 NBA球星知识大挑战&#xff1a;基于 PyQt5 的球星认识小游戏一、项目介绍二、文件夹结构三、项目实现1. 自定义动画按钮&a…

电磁波成像(X射线、CT成像)原理简介

电磁波成像&#xff08;X射线、CT成像&#xff09;原理简介一、图像形成的一般形式二、可见光成像2.1可见光2.2可见光成像三、其他电磁波成像3.1X射线成像3.2CT成像3.2.1CT成像原理3.2.2CT成像与X射线成像对比3.2.3CT生成三维描述3.3PET成像一、图像形成的一般形式 大多数图像…

k8s部署2:前置条件:docker部署

前两天发布了k8s的前置发布条件,对于防火墙的处理,我看大家反响还不错,所以作为先行者,我感觉自己多了不少动力,所以今天来说说k8s部署前置条件中docker部分的部署。在此先感谢一下那些点赞和添加收藏的朋友们,你们的支持是我永远的动力!三克油喂给马吃! 之前写过docke…

某开源漫画系统RCE代码审计

免责声明 本文档所述漏洞详情及复现方法仅限用于合法授权的安全研究和学术教育用途。任何个人或组织不得利用本文内容从事未经许可的渗透测试、网络攻击或其他违法行为。使用者应确保其行为符合相关法律法规&#xff0c;并取得目标系统的明确授权。 对于因不当使用本文信息而造…

Pandas DataFrame 指南

&#x1f4ca; Pandas DataFrame 常用操作代码示例 下面用表格汇总了 DataFrame 的常用操作&#xff0c;方便你快速查阅和实践。 操作类别代码示例说明&#xff08;简要&#xff09;数据读取df pd.read_csv(data.csv)读取 CSV 文件df pd.read_excel(data.xlsx, sheet_nameS…

React学习教程,从入门到精通, React 样式语法知识点与案例详解(13)

React 样式语法知识点与案例详解 作为React初学者&#xff0c;掌握样式语法是构建美观UI的关键。本文将详细介绍React中所有主要的样式方法&#xff0c;并提供详细注释的案例代码。 一、React样式语法知识点总览 1. 行内样式 (Inline Styles) 使用style属性&#xff0c;值为Jav…

Proxychains 配置全解析:从入门到高级应用

引言 在数字时代&#xff0c;网络隐私与安全至关重要。无论是绕过地理限制访问内容&#xff0c;还是在渗透测试中隐藏踪迹&#xff0c;代理工具都不可或缺。Proxychains&#xff08;或称 Proxychains-NG&#xff09;作为一款经典的开源代理链工具&#xff0c;以其高效灵活的特性…

二叉树的前中后序遍历(迭代法)

目录 题目链接&#xff1a; 题目&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 前序遍历&#xff1a; 中序遍历&#xff1a; 后序遍历&#xff1a; 总结&#xff1a; 题目链接&#xff1a; 144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09; 94. …

redis的数据类型:string

文章目录String类型介绍redis采用的字符集json类型介绍String类型的命令set key value [EX seconds] [NX|XX]incr keyincr对操作的key对应的value类型有限制吗&#xff1f;incr key操作的返回值是什么&#xff1f;incr操作的key可以不存在吗&#xff1f;多个客户端同时针对同…