本发明涉及计算机,具体涉及数据位宽转换方法、装置、计算机设备及介质。
背景技术:
1、在大型数字电路设计中,需要将一个大的工程划分为若干个大小不等的功能模块。不同模块之间在进行数据传输时,如果数据位宽不匹配,则需要额外增加一个位宽转换功能模块。常用的整数倍的数据位宽转换可以通过简单的移位控制操作来完成。但是,当存在类似2:3或者3:2之类的非整数位宽转换时,相关方法可能存在无法移植到其他平台的弊端;或者,虽然也有一些方法通用性强、便于移植,但复杂度可能过高,同时占用了更多的逻辑资源。
技术实现思路
1、有鉴于此,本发明提供了一种数据位宽转换方法、装置、计算机设备及介质,以解决相关技术中没有相对有效方法能够在不移植到其他平台的情况下实现非整数位宽转换,或者,采用相较于比较简单、占用逻辑资源少的情况下实现非整数位宽的转换的问题。
2、第一方面,本发明提供了一种数据位宽转换方法,该方法应用于一种数据位宽转换系统,数据位宽转换系统中配置环形缓存寄存器、读指针和写指针,该方法包括:
3、获取第一指示信号的第一指示状态和第二指示信号的第二指示状态;
4、根据第一指示状态控制写指针在环形缓存寄存器中进行寻址,获取第一地址信息;以及根据第二指示状态控制读指针在环形缓存寄存器中进行寻址,获取第二地址信息;
5、根据第一指示状态、第二指示状态、第一地址信息,以及第二地址信息,确定数据位宽转换状态,其中,数据位宽转换状态用于控制输入数据在数据输入通道中按照第一预设字节数量进行输入,或者,反馈前端反压信号以控制输入数据锁存;和/或,数据位宽转换状态用于控制输出数据在数据输出通道中按照第二预设字节数量进行输出,或者,反馈后端反压信号以控制输出数据锁存;
6、对输入数据和/或输出数据执行与数据位宽转换状态对应的操作。
7、本发明提供的一种数据位宽转换方法,具有如下优点:第一指示信号的第一指示状态用于控制写指针在环形缓存寄存器中进行寻址,来获取写指针所指示的第一地址信息。第二指示信号的第二指示状态,用于控制读指针在环形缓存寄存器中进行寻址,获取读指针所指示的第二地址信息。并根据第一地址信息和第二地址信息,确定地址指针差值。这个指针差值则可以代表环形缓存寄存器中目前已经被占用的位置数量。进而推算环形缓存寄存器中空余位置的数量。被占用的位置数量可以指示已输入数据和已输出数据之间的差值。进而,可以判定目前是需要继续写入数据,还是继续读出数据。亦或是写入和读出同时进行。从而,可以根据第一指示状态、第二指示状态,以及地址指针差值,确定数据位宽转换状态,其中数据位宽转换状态用于控制输入数据在数据输入通道按照第一预设字节数量进行输入,或者,反馈前端反压信号以控制输入数据锁存,和/或,控制输出数据在数据输出通道中按照第二预设字节数量进行输出,或者,反馈后端反压信号以控制输出数据锁存。该方式中,基于可编程逻辑器件fpga内部状态机控制读写指针进行跳转在环形缓存寄存器中进行寻址,相较于传统两级转换,设计更加简单、灵活,高效,可以实现输入数据和输出数据位宽灵活可配。无需额外引入第三方位宽转换ip,也可以任意移植到任何平台执行,也无需占用过多的逻辑资源。再者,该方法不仅仅可以适用于非整数倍位宽转换,整数倍位宽转换同样适用。可以适配更多场景的用户设计。
8、在一种可选的实施方式中,根据第一指示状态、第二指示状态、第一地址信息,以及第二地址信息,确定数据位宽转换状态,包括:
9、根据第一地址信息和第二地址信息,确定地址指针差值;
10、根据第一指示状态、第二指示状态、地址指针差值,确定所属数据位宽转换状态。
11、在一种可选的实施方式中,获取第一指示信号的第一指示状态和第二指示信号的第二指示状态,具体包括:
12、获取预配置的数据输入有效指示信号当前的状态,数据输出有效指示信号当前的状态,以及预配置的输出准备信号当前的状态;
13、识别指针差值当前所属的差值范围;
14、根据数据输入有效指示信号当前的状态和与地址指针差值所属的差值范围,确定第一指示状态;
15、以及,根据输出准备信号当前的状态和数据输出有效指示信号当前的状态,确定第二指示状态。
16、具体的,数据输入有效指示信号当前的状态用于指示输入的输入是否有效,地址指针差值如前述内容所介绍的,可以指示输入数据和输出数据之间的差值,如果输入数据和输出数据之间的差值在允许输入数据的差值范围内,且当前输入数据是有效数据,则可以确定第一指示状态有效,也即是控制写指针在环形缓存寄存器中进行寻址。类似的道理,输出准备信号当前的状态可以指示是否准备好接收输出数据。如果已经准备好,且指针差值所属的范围是允许输出数据的差值范围,则确定第二指示状态有效,进而控制读指针在环形缓存寄存器中进行寻址。
17、在一种可选的实施方式中,数据位宽转换状态包括:第一转换状态、第二转换状态、第三转换状态,以及第四转换状态;
18、根据第一指示状态、第二指示状态,以及地址指针差值,确定数据位宽转换状态,包括:
19、当确定第一指示状态和第二指示状态同时无效,且地址指针差值为预设值时,确定数据位宽转换状态为第一转换状态;
20、或者,当确定第一指示状态和第二指示状态同时有效,且地址指针差值为第一差值范围和第二差值范围的交集中的任意数值时,确定数据位宽转换状态为第二转换状态;
21、或者,当确定第一指示状态有效,第二指示状态无效,且地址指针差值为第一差值范围的任意数值时,确定数据位宽转换状态为第三转换状态;
22、或者,当确定第一指示状态无效,第二指示状态有效,且地址指针差值为第一差值范围的任意数值时,确定数据位宽转换状态为第四转换状态。
23、具体的,当第一指示状态和第二指示状态同时无效时,则说明输入数据和输出数据同时处于锁存状态,则可以确定数据位宽转换状态为第一转换状态。或者,第一地址指针差值在第一差值范围和第二差值范围的交集中,则说明地址指针差值既在用于指示允许输入数据的差值范围内,也在允许输出数据的差值范围内,此时如果第一指示状态和第二指示状态同时有效,则可以确定数据位宽转换状态为第二转换状态,也即是用以指示输入和输出同时有效。或者,如果第一指示状态有效,第二指示状态无效,地址指针差值在第一差值范围内,则说明只允许输入数据,不允许输出数据,可以确定该数据位宽转换状态为第三转换状态;或者,如果第二指示状态有效,第一指示状态无效,地址指针差值在第二差值范围内,则说明只允许输出数据,不允许输入数据,可以确定该数据位宽转换状态为第四转换状态。
24、在一种可选的实施方式中,对输入数据和/或输出数据执行与数据位宽转换状态对应的操作,具体包括:
25、当数据位宽转换状态为第一转换状态时,控制输入数据和输出数据同时进行锁存处理;
26、或者,当数据位宽转换状态为第二转换状态时,控制输入数据在数据输入通道按照第一预设字节数量进行输入,且控制输出数据在数据输出通道按照第二预设字节数量进行输出;
27、或者,当数据位宽转换状态为第三转换状态时,控制输入数据在数据输入通道按照第一预设字节数量进行输入,且反馈后端反压信号,用以控制输出数据进行锁存;
28、或者,当数据位宽转换状态为第四转换状态时,反馈前端反压信号,用以控制输入数据进行锁存,且控制输出数据在数据输出通道按照第二预设字节数量进行输出。
29、在一种可选的实施方式中,该方法还包括:
30、当数据输入通道包括多条,采用仲裁的方式从多条数据输入通道中选择目标数据输入通道传输输入数据;和/或,当数据输出通道包括多条时,采用仲裁的方式从多条数据输出通道中选择目标数据输出通道传输输出数据。
31、具体的,当数据输入通道包括多条时,可以采用仲裁的方式从多条数据输入通道中选择最优的目标数据输入通道传输输入数据,类似的道理,如果数据输出通道包括多条,也可以采用仲裁的方式从多条数据输出通道中选择目标输出中选择最优的目标数据输出通道传输输出数据。
32、在一种可选的实施方式中,当数据输入通道包括多条,采用仲裁的方式从多条数据输入通道中选择目标数据输入通道传输输入数据包括:
33、获取每一条数据输入通道预配置的优先级;
34、选取数据输入通道中优先级最高的数据输入通道作为目标数据输入通道,并利用目标数据输入通道传输输入数据;
35、和/或,当数据输出通道包括多条时,采用仲裁的方式从多条数据输出通道中选择目标数据输出通道传输输出数据,包括:
36、获取每一条数据输出通道预配置的优先级;
37、选取数据输出通道中优先级最高的数据输出通道作为目标数据输出通道,并利用目标数据输出通道传输输出数据。
38、具体的,在通过仲裁方式选择目标数据输入通道时,可以事先获取每一条数据输入通道预配置的优先级,然后选取数据输入通道中优先级最高的数据输入通道作为目标数据输入通道,并利用目标数据输入通道传输输入数据。类似的道理,当数据输出通道同样包括多条时,也可以采用类似的方式从多条数据输出通道中选择目标数据输出通道传输输出数据。
39、在一种可选的实施方式中,当数据输入通道包括多条,采用仲裁的方式从多条数据输入通道中选择目标数据输入通道传输输入数据包括:
40、轮询每一条数据输入通道,选择当前未占用的任一条数据输入通道作为目标数据输入通道,用以传输输入数据;
41、和/或,当数据输出通道包括多条时,采用仲裁的方式从多条数据输出通道中选择目标数据输出通道传输输出数据,包括:
42、轮询每一条数据输出通道,选择当前未占用的任一条数据输出通道作为目标数据输出通道,用以传输输出数据。
43、具体的,除了可以采用前述方式实现仲裁以外,也可以采用轮询的方式,从多个数据输入通道中选择当前未占用的数据输入通道作为目标数据输入通道传输输入数据。类似的道理,也可以采用轮询的方式,从多个数据输出通道选择当前未占用的数据输出通道作为目标数据输出通道传输输出数据,以实现负载均衡的同时,提高数据传输效率。
44、在一种可选的实施方式中,当数据输入通道包括多条,该方法还包括:
45、将输入数据划分为与数据输入通道等同数量的多个输入数据片段,并为每一个输入数据片段配置标识信息;
46、将每一个输入数据片段分别分配至不同数据输入通道进行传输,并在缓存队列中按照每一个输入数据片段的标识信息对多个输入数据片段进行组合,以获取输入数据。
47、具体的,当数据输入通道包括多条时,除了可以通过前述方式实现输入数据传输和输出数据传输之外,也可以考虑将输入数据分片为多个输入数据片段,并为每一个输入数据片段配置标识信息,并分配至不同数据输入通道进行传输,并在缓存队列中按照每一个输入数据片段的标识信息对多个输入数据片段进行组合,获取输入数据。
48、在一种可选的实施方式中,当数据输出通道包括多条,该方法还包括:
49、将输出数据划分为与数据输出通道等同数量的多个输出数据片段,并为每一个输出数据片段配置标识信息;
50、将每一个输出数据片段分别分配至不同数据输出通道进行传输,并在缓存队列中按照每一个数据片段的标识信息对多个输出数据片段进行组合,以获取输出数据。
51、具体的,当数据输出通道包括多条时,除了可以通过前述方式实现输出数据传输和输出数据传输之外,也可以考虑将输出数据分片为多个输出数据片段,并为每一个输出数据片段配置标识信息,并分配至不同数据输出通道进行传输,并在缓存队列中按照每一个输出数据片段的标识信息对多个输出数据片段进行组合,获取输出数据。
52、在一种可选的实施方式中,第一指示状态包括有效和无效两种状态;
53、当数据输入有效指示信号当前的状态为有效状态,且地址指针差值所属的差值范围为第一差值范围时,确定第一指示状态有效;
54、或者,
55、当数据输入有效指示信号当前的状态为无效状态,和/或,当地址指针差值所属的差值范围不在第一差值范围内时,确定第一指示状态无效。
56、在一种可选的实施方式中,第一预设差值范围的边界值根据第一预设字节数量确定。
57、具体的,因为输入数据每次都是按照第一预设字节数量进行输入的,所以,确定是否可以输入数据,主要看环形缓存寄存器中是否还空余有至少第一预设字节数量的空余位置,因此,第一预设差值范围的边界值根据第一预设字节数量确定。
58、在一种可选的实施方式中,第二指示状态包括有效状态和无效状态两种类型,数据输出有效指示信号当前的状态包括有效和无效两种类型;
59、当地址指针差值所属的差值范围为第二差值范围时,数据输出有效指示信号当前的状态为有效状态;或者,当地址指针差值所属的差值范围不属于第二差值范围时,数据输出有效指示信号当前的状态为无效状态;
60、当输出准备信号的状态为有效状态,且数据输出有效指示信号当前的状态为有效状态,则确定第二指示状态有效;
61、或者,
62、当输出准备信号的状态为无效状态,和/或,当数据输出有效指示信号当前的状态为无效状态,确定第二指示状态无效。
63、在一种可选的实施方式中,第二预设差值范围的边界值根据第二预设字节数量确定。
64、具体的,因为输出数据每次都是按照第二预设字节数量进行输出的,所以,确定是否可以输出数据,主要看环形缓存寄存器中是否还有至少第二预设字节数量没有被输出,也即是环形缓存寄存器中已占用的位置是否大于或者等于第二预设字节数量,因此,第二预设差值范围的边界值根据第二预设字节数量确定。
65、在一种可选的实施方式中,输入数据预先存放于输入缓存队列,以便后续从输入缓存队列中写数据至环形缓存寄存器;
66、和/或,从环形缓存寄存器读出的数据存入输出缓存队列,以便后续从输出缓存队列读出数据。
67、具体的,输入数据可以先存放于输入缓存队列,类似的道理,输出数据也可以先存放于输出缓存队列,并根据数据位宽转换状态控制数据输入,和/或输出。
68、在一种可选的实施方式中,环形缓存寄存器的最大数据位宽为第一预设字节数量和第二预设字节数量中最大值的预设整数倍。
69、具体的,环形缓存寄存器用于存储输入数据和输出数据,在转换过程中需要同时存储输入和输出数据。为了确保能够容纳输入数据和输出数据,寄存器的位宽需要足够大。但是为了避免占用过多的存储资源,所以可以最低设置为输入数据位宽和输出数据位宽中最大值的两倍,这种情况可以保证环形缓存寄存器方便地进行数据的移位操作,并且确保在移位过程中没有数据溢出。实现数据的缓冲、调整和同步,保证数据的完整性和正确性。
70、在一种可选的实施方式中,当第一指示状态有效时,控制写指针在环形缓存寄存器中按照第一预设字节数量进行跳转寻址;
71、或者,当第一指示状态无效时写指针在环形缓存寄存器中的指针位置不发生改变。
72、在一种可选的实施方式中,当第二指示状态有效时,控制读指针在环形缓存寄存器中按照第二预设字节数量进行跳转寻址;
73、或者,当第二指示状态无效时读指针在环形缓存寄存器中的指针位置不发生改变。
74、在一种可选的实施方式中,对输入数据和/或输出数据执行与数据位宽转换状态对应的操作时,该方法还包括:输入数据和输出数据进行异步传输。
75、具体的,通过异步传输的方式,在理想状态下,可以保证环形缓存寄存器中在某个时刻或者某些没有缓存数据,即输入多少,输出多少。进一步提高数据位宽转换效率。
76、第二方面,本发明提供了一种数据位宽转换装置,该装置包括:
77、获取模块,用于获取第一指示信号的第一指示状态和第二指示信号的第二指示状态;
78、寻址模块,用于根据第一指示状态控制写指针在环形缓存寄存器中进行寻址,获取第一地址信息;以及根据第二指示状态控制读指针在环形缓存寄存器中进行寻址,获取第二地址信息;
79、处理模块,用于根据第一指示状态、第二指示状态、第一地址信息,以及第二地址信息,确定数据位宽转换状态,其中,数据位宽转换状态用于控制输入数据在数据输入通道中按照第一预设字节数量进行输入,或者,反馈前端反压信号以控制输入数据锁存;和/或,数据位宽转换状态用于控制输出数据在数据输出通道中按照第二预设字节数量进行输出,或者,反馈后端反压信号以控制输出数据锁存;
80、执行模块,用于对输入数据和/或输出数据执行与数据位宽转换状态对应的操作。
81、本发明提供的一种数据位宽转换装置,具有如下优点:
82、第一指示信号的第一指示状态用于控制写指针在环形缓存寄存器中进行寻址,来获取写指针所指示的第一地址信息。第二指示信号的第二指示状态,用于控制读指针在环形缓存寄存器中进行寻址,获取读指针所指示的第二地址信息。并根据第一地址信息和第二地址信息,确定地址指针差值。这个指针差值则可以代表环形缓存寄存器中目前已经被占用的位置数量。进而推算环形缓存寄存器中空余位置的数量。被占用的位置数量可以指示已输入数据和已输出数据之间的差值。进而,可以判定目前是需要继续写入数据,还是继续读出数据。亦或是写入和读出同时进行。从而,可以根据第一指示状态、第二指示状态,以及地址指针差值,确定数据位宽转换状态,其中数据位宽转换状态用于控制输入数据在数据输入通道按照第一预设字节数量进行输入或者,反馈前端反压信号以控制输入数据锁存,和/或,控制输出数据在数据输出通道中按照第二预设字节数量进行输出,或者,反馈后端反压信号以控制输出数据锁存。该方式中,基于可编程逻辑器件fpga内部状态机控制读写指针进行跳转在环形缓存寄存器中进行寻址,相较于传统两级转换,设计更加简单、灵活,高效,可以实现输入数据和输出数据位宽灵活可配。无需额外引入第三方位宽转换ip,也可以任意移植到任何平台执行,也无需占用过多的逻辑资源。再者,该方法不仅仅可以适用于非整数倍位宽转换,整数倍位宽转换同样适用。可以适配更多场景的用户设计。
83、第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的数据位宽转换方法。
84、第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的数据位宽转换方法。