CN106406423B - 一种软件算法模拟同步总线产生时钟信号的方法 - Google Patents
一种软件算法模拟同步总线产生时钟信号的方法 Download PDFInfo
- Publication number
- CN106406423B CN106406423B CN201610749775.8A CN201610749775A CN106406423B CN 106406423 B CN106406423 B CN 106406423B CN 201610749775 A CN201610749775 A CN 201610749775A CN 106406423 B CN106406423 B CN 106406423B
- Authority
- CN
- China
- Prior art keywords
- data
- initial
- algorithm
- moved
- clock signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
Abstract
一种软件算法模拟同步总线产生时钟信号的方法,包括以下步骤:(1)初始化变量值,重置buff的初始值;(2)获取原始数据的长度和起始地址;(3)启动循环操作,获取第i个数据Data[i];将10000000B左移8位,再与Data[i]进行逻辑或操作,生成Data1;将00000000B左移8位,再与Data[i]进行逻辑或操作,生Data2;(4)将Data1左移16位,再与Data2进行逻辑或操作,生成32位长的数据,存储到buff中;(5)依次对原始数据中的每个数据进行步骤(3)、(4)的操作;直至循环结束;(6)启动系统的DMA传输功能,将buff中存储的数据传输出去。本发明方法成本低。
Description
技术领域
本发明涉及一种软件算法模拟同步总线产生时钟信号的方法。
背景技术
在电子产品中,有大量需要主处理器将处理好的数据发给外设的操作。在进行信息传递时,采用的数据总线方式有两种:同步总线方式与异步总线方式。同步总线方式需要CLK时钟信号来同步传输,例如SDIO接口有1根CLK线,4根数据线;LCM接口有1根CLK线。一般这些CLK线都是通过物理芯片控制并产生的。通过硬件的物理接口,数据从处理器传送给外部设备,从而实现外部设备的驱动。
随着电子产品的不断发展,产品功能的不断增加,现有的硬件平台的接口往往是不够的。例如,有手机需要支持2个屏幕,就需要2个显示模块;有的相机需要2个存储卡,就需要2个SDIO模块;为了解决上述硬件平台接口不够用的问题,现有的做法是重新设计芯片或者更换硬件平台,这将导致成本大幅增加。
发明内容
本发明所要解决的技术问题是,克服上述背景技术的不足,提供一种可有效节约成本的软件算法模拟同步总线产生时钟信号的方法。
本发明解决其技术问题采用的技术方案是,一种软件算法模拟同步总线产生时钟信号的方法,包括以下步骤:
(1)初始化算法的变量值,重置算法存储数组buff的初始值;
(2)获取需要传输的原始数据的长度Dlen以及原始数据的起始地址Data[];
(3)根据原始数据的长度Dlen,启动循环操作,根据循环步进次数i和原始数据的起始地址Data[],获取原始数据中的第i个数据Data[i];将10000000B左移8位,将左移8位后的结果与Data[i]进行逻辑或操作,生成一个新的16位长的数据Data1;将00000000B左移8位,将左移8位后的结果与Data[i]进行逻辑或操作,再次生成一个新的16位长的数据Data2;
(4)将Data1左移16位,将左移16后的结果与Data2进行逻辑或操作,生成一个新的32位长的数据,然后存储到算法存储数组buff中;
(5)利用循环操作,依次对原始数据中的每个数据进行步骤(3)、(4)的操作;直至循环结束;
(6)启动系统的DMA传输功能,将算法存储数组buff中存储的数据传输出去,即得到所需的时钟信号。
进一步, 步骤(6)中,先将算法存储数组buff中存储的数据写入LCM接口或者并行接口的写地址中,再传输给外部设备。
与现有技术相比,本发明的优点如下:通过算法将数据进行加工改造,控制数据流规律输出0,1,0,1,0,1,0,1的序列,模拟输出时钟信号,输出的时钟信号可模拟同步总线驱动外部器件,极大程度上拓展硬件功能接口,能够外接基于同步总线的外部设备,成本较低。
附图说明
图1是本发明实施例的输出时钟信号波形示意图。
图2是本发明实施例的方法流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步详细描述。
本实施例包括以下步骤:
(1)建立好硬件环境,软件环境,初始化算法的变量值,变量包括i、Dlen、Data1和Data2,重置算法存储数组buff的初始值;
(2)获取需要传输的原始数据的长度Dlen以及原始数据的起始地址Data[];
(3)根据原始数据的长度Dlen,启动循环操作,根据循环步进次数i和原始数据的起始地址Data[],获取原始数据中的第i个数据Data[i];将10000000B左移8位,将左移8位后的结果与Data[i]进行逻辑或操作,生成一个新的16位长的数据Data1;将00000000B左移8位,将左移8位后的结果与Data[i]进行逻辑或操作,再次生成一个新的16位长的数据Data2;
(4)将Data1左移16位,将左移16后的结果与Data2进行逻辑或操作,生成一个新的32位长的数据,然后存储到算法存储数组buff中;
步骤(4)的目的在于将两个16位长数据(Data1和Data2)拼接为一个32位长的数据,以利用 32位DMA(Direct Memory Access,直接内存存取)总线的带宽。
(5)利用循环操作,依次对原始数据中的每个数据进行步骤(3)、(4)的操作;直至循环结束;
(6)启动系统的DMA传输功能,将算法存储数组buff中存储的数据传输出去,即得到所需的时钟信号,时钟信号如图1所示;传输起始地址为算法存储数组buff的起始地址,目的地址为LCM (LCD Module,液晶模块)接口的写地址,或者其他的并行接口(如:SDIO接口)的写地址,LCM接口或并行接口的一个信号线连接到外部设备的CLK端,这个信号线上将产生连续0,1高低电平规律变化的数据,
写地址收到数据后,会立即通过信号线发送给外部设备,外部设备即接收到时钟信号。
本实施通过一个16位的并行接口输出数据,其中Data0~Data7为传输数据端口,D15为模拟时钟信号端口。通过本发明方法模拟,传输的时钟信号与物理芯片产线的信号一致。
DMA是目前芯片中较为常见的功能,主要特点就是不通过CPU而直接与系统内存交换数据的接口技术;为满足某些外部设备特殊的时序要求,特别是指定频率的要求,本发明使用DMA来传输数据,调节DMA的参数,控制数据流的读写速度,实现外部设备的频率要求。
相对于硬件同步总线来说,一个完整时钟信号需要2个信号来模拟完成(一个数据0,一个数据1组合)。因此要在总线上传输的次数及数据量也相应的翻倍。
DMA传输的数据需要处理器在数据缓冲区内先进行填写,目前主流的处理器都是32位总线,我们在算法上根据同一时钟内两次16位数据的相关性,能够一次生成32位的数据。这样可以用32位总线的方法来存储DMA的缓冲区数据,这样一次处理可以存储2个模拟总线的数据,这个处理能抵消算法产生的2次16位数据存储操作,降低双倍数据量增加导致的耗时后果,而DMA输出仍然为16位总线,从而达到与硬件同步总线同样的效率。
参照图2,本实施例的具体流程如下:
S1:初始化算法变量值;重置算法存储数组buff的初始值;
S2:获取需要传输的原始数据的长度Dlen;获取原始数据的起始地址Data[];
S3:判定传输参数是否合法,若是,转到步骤S4;若否,结束算法运行;
S4:设置步进变量i,开始for循环依次取待传输数据;
S5:判定待传输数据是否全部处理完,若是,转到步骤S9;若否,转到步骤S6;
S6:将取出的数据进行以下逻辑运算操作:0x80<<8|data[i];0x00<<8|data[i];0x80<<8|data[i];0x00<<8|data[i]的含义为:将10000000B左移8位,将左移8位后的结果与Data[i]进行逻辑或操作,生成一个新的16位长的数据Data1;将00000000B左移8位,将左移8位后的结果与Data[i]进行逻辑或操作,再次生成一个新的16位长的数据Data2;
S7:将步骤S6中的Data1和Data2再次逻辑运算拼接成32位数据:buff[i]=(0x80<<8|data[i])<<16|(0x00<<8|data[i]);
buff[i]=(0x80<<8|data[i])<<16|(0x00<<8|data[i])的含义为:将Data1左移16位,将左移16后的结果与Data2进行逻辑或操作,生成一个新的32位长的数据,然后存储到算法存储数组buff中;
S8:步进变量加1;返回步骤S5;
S9:配置DAM传输参数,启动DAM将buff中生成的数据写入LCM接口或者其他并行接口的写地址中;
S10:外部设备接收写地址中的数据。
本发明通过算法将数据进行加工改造,控制数据流规律输出0,1,0,1,0,1,0,1的序列,模拟输出时钟信号,输出的时钟信号可模拟同步总线驱动外部器件,极大程度上拓展硬件功能接口,能够外接基于同步总线的外部设备,成本较低。
本领域的技术人员可以对本发明进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。
说明书中未详细描述的内容为本领域技术人员公知的现有技术。
Claims (2)
1.一种软件算法模拟同步总线产生时钟信号的方法,其特征在于,包括以下步骤:
(1)初始化算法的变量值,重置算法存储数组buff的初始值;
(2)获取需要传输的原始数据的长度Dlen以及原始数据的起始地址Data[];
(3)根据原始数据的长度Dlen,启动循环操作,根据循环步进次数i和原始数据的起始地址Data[],获取原始数据中的第i个数据Data[i];将10000000B左移8位,将左移8位后的结果与Data[i]进行逻辑或操作,生成一个新的16位长的数据Data1;将00000000B左移8位,将左移8位后的结果与Data[i]进行逻辑或操作,再次生成一个新的16位长的数据Data2;
(4)将Data1左移16位,将左移16后的结果与Data2进行逻辑或操作,生成一个新的32位长的数据,然后存储到算法存储数组buff中;
(5)利用循环操作,依次对原始数据中的每个数据进行步骤(3)、(4)的操作;直至循环结束;
(6)启动系统的DMA传输功能,将算法存储数组buff中存储的数据传输出去,即得到所需的时钟信号。
2.如权利要求1所述的软件算法模拟同步总线产生时钟信号的方法,其特征在于:步骤(6)中,先将算法存储数组buff中存储的数据写入LCM接口或者并行接口的写地址中,再传输给外部设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610749775.8A CN106406423B (zh) | 2016-08-30 | 2016-08-30 | 一种软件算法模拟同步总线产生时钟信号的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610749775.8A CN106406423B (zh) | 2016-08-30 | 2016-08-30 | 一种软件算法模拟同步总线产生时钟信号的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106406423A CN106406423A (zh) | 2017-02-15 |
CN106406423B true CN106406423B (zh) | 2019-05-07 |
Family
ID=58003483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610749775.8A Active CN106406423B (zh) | 2016-08-30 | 2016-08-30 | 一种软件算法模拟同步总线产生时钟信号的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106406423B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114416608A (zh) * | 2021-12-06 | 2022-04-29 | 埃夫特智能装备股份有限公司 | 基于虚拟机器人控制器总线结构的外部设备模拟平台及其模拟方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102137086A (zh) * | 2010-09-10 | 2011-07-27 | 华为技术有限公司 | 数据传输处理方法、装置及系统 |
CN102221987A (zh) * | 2011-05-11 | 2011-10-19 | 西安电子科技大学 | 基于嵌入式专用指令集处理器的指令集编码方法 |
US8760502B2 (en) * | 2010-11-12 | 2014-06-24 | Samsung Electronics Co., Ltd. | Method for improving 3 dimensional effect and reducing visual fatigue and apparatus enabling the same |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100403374B1 (ko) * | 2000-09-27 | 2003-10-30 | 광주과학기술원 | 입력연산자 정규화를 이용한 테이블참조 기반 고속통신용위상계산기 |
-
2016
- 2016-08-30 CN CN201610749775.8A patent/CN106406423B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102137086A (zh) * | 2010-09-10 | 2011-07-27 | 华为技术有限公司 | 数据传输处理方法、装置及系统 |
US8760502B2 (en) * | 2010-11-12 | 2014-06-24 | Samsung Electronics Co., Ltd. | Method for improving 3 dimensional effect and reducing visual fatigue and apparatus enabling the same |
CN102221987A (zh) * | 2011-05-11 | 2011-10-19 | 西安电子科技大学 | 基于嵌入式专用指令集处理器的指令集编码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106406423A (zh) | 2017-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105824777B (zh) | 一种spi总线在ipran设备中的实现方法 | |
CN105468547B (zh) | 一种基于axi总线的便捷可配置帧数据存取控制系统 | |
CN103229155B (zh) | 高速内存系统 | |
CN106951388A (zh) | 一种基于PCIe的DMA数据传输方法及系统 | |
CN101599004B (zh) | 基于fpga的sata控制器 | |
CN107562672B (zh) | 一种提高矢量网络分析仪数据传输速率的系统及方法 | |
CN102117342A (zh) | 基于PCI Express总线的多波段红外图像实时采集系统及方法 | |
US7707321B2 (en) | Chained DMA for low-power extended USB flash device without polling | |
US20110016267A1 (en) | Low-Power USB Flash Card Reader Using Bulk-Pipe Streaming with UAS Command Re-Ordering and Channel Separation | |
CN104951252A (zh) | 一种数据访问方法及PCIe存储设备 | |
CN102012885A (zh) | 采用动态i2c总线实现通讯的系统及方法 | |
CN102156683A (zh) | 通用串行总线传输转译器及微帧同步方法 | |
CN107015927A (zh) | 一种基于SoC支持多个SPI接口标准组的装置 | |
CN104731746A (zh) | 设备控制器装置 | |
US20140244904A1 (en) | Memory device and computer system | |
US20130173838A1 (en) | Bridge between a peripheral component interconnect express interface and a universal serial bus 3.0 device | |
CN108268414A (zh) | 基于spi模式的sd卡驱动器及其控制方法 | |
US11500541B2 (en) | Memory system and controlling method | |
CN102147780B (zh) | 一种基于串行数据传输方式的链路接口电路 | |
CN106406423B (zh) | 一种软件算法模拟同步总线产生时钟信号的方法 | |
US10049076B2 (en) | Methods and systems for implementing high speed serial interface bus having inhomogeneous lane bundles and encodings | |
CN104111902B (zh) | 基于双倍速率同步动态随机存储器接口的通信系统及方法 | |
KR102457095B1 (ko) | 딜레이 가변 소자를 포함하는 메모리 모듈 및 그것의 딜레이 설정 방법 | |
WO2005098636A1 (ja) | フロー制御の初期化方法および情報処理装置 | |
US10002090B2 (en) | Method for improving the performance of synchronous serial interfaces |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |