历史上的今天
返回首页

历史上的今天

今天是:2024年12月08日(星期日)

正在发生

2021年12月08日 | 第十一章、Tiny4412 U-BOOT移植十一 DDR3简单介绍

2021-12-08 来源:eefocus

由于Tiny4412所用的芯片是DDR3,我从网上找一片介绍DDR3的原理的博文,虽然很多原理是一致的,但还是想着这些资料难搜集,而且多看一次除了费点时间外,我想不到别的坏处,那就在看一次,以便以后在修改代码时,已能对DDR3的所有参数非常清楚,网址http://blog.csdn.net/wshini7316/article/details/8508836

此博文以是镁光的(Micron MT41J128M8 1Gb DDR3 SDRAM芯片为例说明的。内容如下:


一、内存工作流程

首先,我们先了解一下内存的大体结构工作流程,这样会比较容量理解这些参数在其中所起到的作用。这部分的讲述运用DDR3的简化时序图。

DDR3的内部是一个存储阵列,将数据“填”进去,你可以它想象成一张表格,如下图10-1所示。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)就是逻辑 Bank(Logical Bank,下面简称Bank)。 



图11-1、DDR3内部Bank示意图

DDR3内部Bank示意图,这是一个NXN的阵列,B代表Bank地址编号,C代表列地址编号,R代表行地址编号。

如果寻址命令是B1、R2、C6,就能确定地址是图中红格的位置

目前DDR3内存芯片基本上都是8个Bank设计,也就是说一共有8个这样的“表格”。

寻址的流程也就是先指定Bank地址,再指定行地址,然后指列地址最终的确寻址单元。

 

目前DDR3系统而言,还存在物理Bank的概念,这是对内存子系统的一个相关术语,并不针对内存芯片。内存为了保证CPU正常工作,必须一次传输完CPU 在一个传输周期内所需要的数据。而CPU在一个传输周期能接受的数据容量就是CPU数据总线的位宽,单位是bit(位)。控制内存与CPU之间数据交换的北桥芯片也因此将内存总线的数据位宽等同于CPU数据总线的位宽,这个位宽就称为物理Bank(Physical Bank,有的资料称之为Rank)的位宽。目前这个位宽基本为64bit。

在实际工作中,Bank地址与相应的行地址是同时发出的,此时这个命令称之为“行激活”(Row Active)。在此之后,将发送列地址寻址命令与具体的操作命令(是读还是写),这两个命令也是同时发出的,所以一般都会以“读/写命令”来表示列寻址。根据相关的标准,从行有效到读/写命令发出之间的间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟,RAS就是行地址选通脉冲,CAS就是列地址选通脉冲),我们可以理解为行选通周期。tRCD是DDR的一个重要时序参数,广义的tRCD以时钟周期(tCK,Clock Time)数为单位,比如tRCD=3,就代表延迟周期为两个时钟周期,具体到确切的时间,则要根据时钟频率而定。



图11-2、tRCD示意图

上图11-2中显示的是tRCD=3

接下来,相关的列地址被选中之后,将会触发数据传输,但从存储单元中输出到真正出现在内存芯片的 I/O 接口之间还需要一定的时间(数据触发本身就有延迟,而且还需要进行信号放大),这段时间就是非常著名的 CL(CAS Latency,列地址脉冲选通潜伏期)。CL 的数值与 tRCD 一样,以时钟周期数表示。如 DDR3-800,时钟频率为 100MHz,时钟周期为 10ns,如果 CL=2 就意味着 20ns 的潜伏期。不过CL只是针对读取操作。

由于芯片体积的原因,存储单元中的电容容量很小,所以信号要经过放大来保证其有效的识别性,这个放大/驱动工作由S-AMP负责,一个存储体对应一个S-AMP通道。但它要有一个准备时间才能保证信号的发送强度(事前还要进行电压比较以进行逻辑电平的判断),因此从数据I/O总线上有数据输出之前的一个时钟上升沿开始,数据即已传向S-AMP,也就是说此时数据已经被触发,经过一定的驱动时间最终传向数据I/O总线进行输出,这段时间我们称之为tAC(Access Time from CLK,时钟触发后的访问时间)。



图11-3、CL和tAC示意图

上图11-3中标准CL=2,tAC=1

目前内存的读写基本都是连续的,因为与CPU交换的数据量以一个Cache Line(即CPU内Cache的存储单位)的容量为准,一般为64字节。而现有的Rank位宽为8字节(64bit),那么就要一次连续传输8次,这就涉及到我们也经常能遇到的突发传输的概念。突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输的周期数就是突发长度(Burst Lengths,简称BL)。

在进行突发传输时,只要指定起始列地址与突发长度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址。这样,除了第一笔数据的传输需要若干个周期(主要是之前的延迟,一般的是tRCD+CL)外,其后每个数据只需一个周期的即可获得。



图11-4、BL示意图

突发连续读取模式:只要指定起始列地址与突发长度,后续的寻址与数据的读取自动进行,而只要控制好两段突发读取命令的间隔周期(与BL相同)即可做到连续的突发传输。

谈到了突发长度时。如果BL=4,那么也就是说一次就传送4×64bit的数据。但是,如果其中的第二笔数据是不需要的,怎么办?还都传输吗?为了屏蔽不需要的数据,人们采用了数据掩码(Data I/O Mask,简称DQM)技术。通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。这里需要强调的是,在读取时,被屏蔽的数据仍然会从存储体传出,只是在“掩码逻辑单元”处被屏蔽。DQM由北桥控制,为了精确屏蔽一个P-Bank位宽中的每个字节,每个DIMM有8个DQM信号线,每个信号针对一个字节。这样,对于4bit位宽芯片,两个芯片共用一个DQM信号线,对于8bit位宽芯片,一个芯片占用一个DQM信号,而对于 16bit位宽芯片,则需要两个DQM引脚。

在数据读取完之后,为了腾出读出放大器以供同一Bank内其他行的寻址并传输数据,内存芯片将进行预充电的操作来关闭当前工作行。还是以上面那个Bank示意图为例。当前寻址的存储单元是B1、R2、C6。如果接下来的寻址命令是B1、R2、C4,则不用预充电,因为读出放大器正在为这一行服务。但如果地址命令是B1、R4、C4,由于是同一Bank的不同行,那么就必须要先把R2关闭,才能对R4寻址。从开始关闭现有的工作行,到可以打开新的工作行之间的间隔就是tRP(Row Precharge command Period,行预充电有效周期),单位也是时钟周期数。



图11-5、tRP示意图

在不同Bank间读写也是这样,先把原来数据写回,再激活新的Bank/Row。

二、数据选取脉冲(DQS)

DQS 是DDR中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每一颗芯片都有一个DQS信号线,它是双向的,在写入时它用来传送由北桥发来的DQS信号,读取时,则由芯片生成DQS向北桥发送。完全可以说,它就是数据的同步信号。

在读取时,DQS与数据信号同时生成(也是在CK与CK#的交叉点)。而DDR内存中的CL也就是从CAS发出到DQS生成的间隔,DQS生成时,芯片内部的预取已经完毕了,由于预取的原因,实际的数据传出可能会提前于DQS发生(数据提前于DQS传出)。由于是并行传输,DDR内存对tAC也有一定的要求,对于DDR266,tAC的允许范围是±0.75ns,对于DDR333,则是±0.7ns,有关它们的时序图示见前文,其中CL里包含了一段DQS 的导入期。

DQS 在读取时与数据同步传输,那么接收时也是以DQS的上下沿为准吗?不,如果以DQS的上下沿区分数据周期的危险很大。由于芯片有预取的操作,所以输出时的同步很难控制,只能限制在一定的时间范围内,数据在各I/O端口的出现时间可能有快有慢,会与DQS有一定的间隔,这也就是为什么要有一个tAC规定的原因。而在接收方,一切必须保证同步接收,不能有tAC之类的偏差。这样在写入时,芯片不再自己生成DQS,而以发送方传来的DQS为基准,并相应延后一定的时间,在DQS的中部为数据周期的选取分割点(在读取时分割点就是上下沿),从这里分隔开两个传输周期。这样做的好处是,由于各数据信号都会有一个逻辑电平保持周期,即使发送时不同步,在DQS上下沿时都处于保持周期中,此时数据接收触发的准确性无疑是最高的。



图11-6、DQS时序示意图

在写入时,以DQS的高/低电平期中部为数据周期分割点,而不是上/下沿,但数据的接收触发仍为DQS的上/下沿

三、容量的计算

1、结构框图



图11-7、DDR3内部功能方块图

上图11-7为X8data的单颗DDR3架构图,行(Row)地址线复用14根,列(Column)地址线复用10根,Bank数量为8个,IO Buffer 通过8组数位线(DQ0-DQ7)来完成对外的通信,故此单颗DDR3芯片的容量为2的14次方乘2的10次方乘8乘8,结果为1Gbit,因为1B包含8bit,1GB/8=128MB。

如果我们要做成容量为1GB的内存条则需要8颗这样的DDR3内存芯片,每颗芯片含8根数位线(DQ0-DQ7)则总数宽为64bit,这样正好用了一个Rank。

假果还用128MB的DDR3芯片去做2GB内存条,结果就会有所不同。我们最好选用4根数位线(DQ0-DQ3),数量是16颗,这样也是用了一个Rank。

在K2的项目中我们要做容量为8GB的内存条,则数量用64颗128M的DDR3,这样位宽高达64X4=256bit,要做成4个Rank。

2、管脚功能描述









图11-8、DDR3引脚说明

3、状态图



图11-9、DDR状态转换图

Power on: 上电。

Reset Procedure: 复位过程。

Initialization: 初始化。

ZQCL: 上电初始化后,用完成校准ZQ电阻。ZQCL会触发DRAM内部的校准引擎,一旦校准完成,校准后的值会传递到DRAM的IO管脚上,并反映为输出驱动和ODT阻值。

ZQCS: 周期性的校准,能够跟随电压和温度的变化而变化。校准需要更短的时间窗口,一次校准,可以有效的纠正最小0.5%的RON和RTT电阻。

Al:Additive latency.是用来在总线上保持命令或者数据的有效时间。

在ddr3允许直接操作读和写的操作过程中,AL是总线上的数据出现到进入器件内部的时间。

下图为DDR3标准所支持的时间操作。


表11-1、DDR3  AL时间设置说明



Write Leveling:为了得到更好的信号完整性,DDR3存储模块采取了FLY_BY的拓扑结构,来处理命令、地址、控制信号和时钟。FLY_BY的拓扑结构可以有效的减少stub的数量和他们的长度, 但是却会导致时钟和strobe信号在每个芯片上的flight time skew,这使得控制器(FPGA或者CPU), 很难以保持Tdqss ,tdss和tdsh这些时序。这样,ddr3支持write leveling这样一个特性,来允许控制器来补偿倾斜(flight time skew)。存储器控制器能够用该特性和从DDR3反馈的数据调成DQS和CK之间的关系。在这种调整中,存储器控制器可以对DQS信号可调整的延时,来与时钟信号的上升边沿对齐。 控制器不停对DQS进行延时,直到发现从0到1之间的跳变出现,然后DQS的延时通过这样的方式被建立起来了,由此可以保证tDQSS。



图11-10、write leveling功能实现说明图

MRS: MODE Register Set, 模式寄存器设置。为了应用的灵活性,不同的功能、特征和模式等在DDR3芯片上的Mode Register中,通过编程来实现。模式寄存器MR没有缺省值,因此模式寄存器MR必须在上电或者复位后被完全初始化,这样才能使得DDR可以正常工作。正常工作模式下,MR也可以被重新写入。模式寄存器的设置命令周期,tMRD两次操作的最小时间,其具体时序图,如下图10-9所示。模式寄存器,分为MR0、MR1、MR2和MR4。

MR0用来存储DDR3的不同操作模式的数据:包括突发长度、读取突发种类、CAS长度、测试模式、DLL复位等。

MR1用来存储是否使能DLL、输出驱动长度、Rtt_Nom、额外长度、写电平使能等。

MR2用来存储控制更新的特性, Rtt_WR阻抗,和CAS写长度。

MR3用来控制MPR。



11-11、tMRD时序图

MPR: Multi-purpose register. 多用途寄存器。MPR的功能是读出一个预先设定的系统时序校准比特序列。为了使能MPR功能,需要在MRS的寄存器MR3的A2位写1,并且在此之前需要将DDR3的所有bank处于idle状态; 一旦MPR被使能后,任何RD和RDA的命令都会被引入到MPR寄存器中,当MPR寄存器被使能后, 除非MPR被禁止(MR3的A2=0),否则就只有RD和RDA被允许。在MPR被使能的时候,RESET功能是被允许的。

Precharge Power Down: bank在in-progress命令后关闭。

Active Power Down:bank在in-progress命令后依然打开。

Idle:所有的bank必须预先充电,所有时序满足,DRAM的ODT电阻,RTT必须为高阻。

CWL:CAS write latency. 以时钟周期为单位,在内部写命令和第一位输入数据的时间延时,该单位始终为整数。在操作过程中,所有的写延时WL被定义为AL(Additive Latency)+CWL。

Rtt: Dynamic ODT.DDR3引入的新特性。在特定的应用环境下为了更好的在数据总线上改善信号完整性,不需要特定的MRS命令即可以改变终结强度(或者称为终端匹配)。在MR2中的A9和A10位设置了Rtt_WR。DDR3中, 有两种RTT值是可以选择的,一种是RTT_Nom,另一种是RTT_WR;Rtt_Nom是在没有写命令的时候被选择的,当有了写命令后,ODT就会变成Rtt_wr,当写命令结束后,又会回到Rtt_nom。也就是说,RTT在ODT使能后出现,当总线上没有数据的时候,采用的RTT值为RTT_nom;而当总线上有了数据后,要求此时的ODT的值为Rtt_wr。

具体的DDR3的ODT产生时序见图10-10。当ODT被使能后,必须要保持高电平ODTH4个时钟周期才可以有效;如果写命令被放入寄存器并且ODT是高,那么ODT必须保持ODTH4或者ODTH8,这样ODT才可以有效。





11-12、Rtt时序图

 

ACT = ACTIVATE                        PREA = PRECHARGE ALL                           SRX = 自刷新推出

MPR = 多用处寄存器                 READ = RD,RDS4,RDS8                        WRITE=WR,WRS4,WRS8

MRS=模式寄存器集                   READ AP=RDAP,RDAPS4,RDAPS8               WRITE=WRAP,WRAPS4,WRAPS8

PDE=掉电进入                           REF=REFRESH                                           ZQCL=ZQ LONG CALIBRATION

PDX=掉电推出                           RESET=启动复位过程                                ZACS=ZA SHORT CALIBTATION

PRE=预充电                               SRE=自刷新进入

 

4、工作原理

在描述了上述的一些基本概念后,就可以对图中的DDR3工作原理进行基本的描述了理解了。

首先,芯片进入上电,在上电最小为200us的平稳电平后,等待500usCKE使能,在这段时间芯片内部开始状态初始化,该过程与外部时钟无关。在时钟使能信号前(cke),必须保持最小10ns或者5个时钟周期,除此之外,还需要一个NOP命令或者Deselect命令出现在CKE的前面。然后DDR3开始了ODT的过程,在复位和CKE有效之前,ODT始终为高阻。在CKE为高后,等待tXPR(最小复位CKE时间),然后开始从MRS中读取模式寄存器。然后加载MR2、MR3的寄存器,来配置应用设置;然后使能DLL,并且对DLL复位。接着便是启动ZQCL命令,来开始ZQ校准过程。等待校准结束后,DDR3就进入了可以正常操作的状态。

对于基本的配置过程,现在就可以结束了。下面,结合CH1的控制器FPGA,说明对DDR3相关的配置。

 

表11-2、DDR3命令表



上表11-2中MRS可以设置Mode寄存器值



图11-13、Mode寄存器值设置说明图

 



图11-14、设置时序图

以上图14-14为例,CS#,RAS#,CAS#,WE#为L,L,H,H。则指令为Row/Bank Active;随后CS#拉高,command无效,在第4个时钟周期这4个信号变为L,H,L,H,对照表格,指令为Read,经过几个时钟周期延迟,在3CLK后读数据。

5、 DDR3其他相关资料

         下面的内容是我从网上找来整理的,这些内容其实可看可不看了,对我们修改代码已没有太多的用处了,有兴趣的朋友可以看一下。

 

DDR3 SDRAM是高速动态随机存取存储器,内部配置有8个BANK。DDR3 SDRAM使用8n预取结构,以获得高速操作。8n预取结构同接口组合起来以完成在I/O脚上每个时钟两个数据字的传输。DDR3 SDRAM的一个单次读或写操作由两部分组成:一是在内部DRAM核中进行的8n位宽四个时钟数据传输,另一个是在I/O脚上进行的两个对应n位宽、半时钟周期的数据传输。

对DDR3 SDRAM的读写操作是有方向性的突发操作,从一个选择的位置开始,突发长度是8或者是一个以编程序列的长度为4的Chopped突发方式。操作开始于Active命令,随后是一个Read/Write命令。Active命令同时并发含带地址位,以选择Bank和Row地址(BA0-BA2选择BANK、A0-A15选择Row)。而Read/Write命令并发含带突发操作的起始Column地址,并确定是否发布自动预充电命令(通过A10)和选择BC4或BL8模式(通过A12)(如果模式寄存器使能)。

在正常操作之前,DDR3 SDRAM必要以预先定义的方式上电和初始化。

 

DDR3内存的发展 

早在2002年6月28日,JEDEC就宣布开始开发DDR3内存标准,半导体市场调查机构iSuppli预测DDR3内存将会在2008年替代DDR2成为市场上的主流产品,iSuppli认为在那个时候DDR3的市场份额将达到55%。不过,就具体的设计来看,DDR3与DDR2的基础架构并没有本质的不同。从某种角度讲,DDR3是为了解决DDR2发展所面临的限制而催生的产物。 

由于DDR2内存的各种不足,制约了其进一步的广泛应用,DDR3内存的出现,正是为了解决DDR2内存出现的问题,具体有:

推荐阅读

史海拾趣

Avel Lindberg公司的发展小趣事

由于我无法直接获取Avel Lindberg公司的详细发展资料,因此我无法直接为您撰写5个关于该公司发展起来的具体故事。不过,我可以为您提供一个通用的故事框架,您可以根据这个框架结合公司的公开信息来撰写相关故事。

Avel Lindberg公司发展故事框架

  1. 创业初期: 描述Avel Lindberg公司成立的背景,包括创始人或核心团队的愿景、行业趋势以及初始产品或服务。可以提及公司如何克服初创期的困难,如资金短缺、市场竞争激烈等问题,逐渐在市场上站稳脚跟。

  2. 技术突破: 讲述公司在某个关键时期实现的技术突破,这项突破可能是对既有技术的改进,也可能是全新技术的研发。这个突破如何帮助公司打开了新的市场领域,提升了竞争力,成为行业内的领军者。

  3. 合作与扩展: 描述公司如何通过与其他企业、研究机构或高校建立合作关系,来扩大业务范围或提升技术水平。这些合作可能涉及共同研发、市场拓展、品牌建设等方面,对公司的长期发展产生了积极影响。

  4. 国际化战略: 讲述公司如何逐步实施国际化战略,进入海外市场。这包括公司如何分析国际市场的需求和竞争态势,制定合适的市场进入策略,以及在国际市场上取得的成就和面临的挑战。

  5. 社会责任与可持续发展: 介绍公司在发展过程中如何关注社会责任和可持续发展。这可以包括公司在环保、员工福利、社区支持等方面的举措,以及这些举措如何提升了公司的社会形象和品牌价值。

在撰写具体故事时,您可以根据Avel Lindberg公司的实际情况调整上述框架中的内容,并结合公司的官方公告、新闻报道和行业分析报告等资料来丰富细节。同时,请确保所描述的事实准确无误,避免主观评价和猜测。

Eclipse Magnetics公司的发展小趣事

由于篇幅限制,无法在此处直接提供5个完整的、每篇至少500字的Eclipse Magnetics公司电子行业发展的相关故事。不过,我可以概括地描述几个可能的故事线索,这些线索可以基于Eclipse Magnetics公司的历史、技术发展和市场应用来构建。

  1. 品牌初创与磁铁技术的突破

在1930年代,Eclipse Magnetics的名字首次出现,标志着这个品牌的诞生。随着技术的不断发展,公司在1940年代成为独立公司,并开始专注于磁铁技术的研发。到了1950年代,Eclipse Magnetics在技术上取得了重大突破,他们将磁铁涂上红色,并设计了与公司颜色相匹配的马蹄形标志,这一设计不仅提升了品牌形象,也成为了国际通用标记。这一时期的Eclipse Magnetics,以其独特的技术和产品,开始在电子行业中崭露头角。

  1. 航空航天领域的应用与拓展

随着航空航天技术的不断发展,Eclipse Magnetics看到了磁铁技术在该领域的巨大潜力。公司开始投入大量资源,研发适用于航空航天领域的磁性解决方案。通过不断的技术创新和产品优化,Eclipse Magnetics成功地为航空航天领域提供了高性能、高可靠性的磁铁产品,并在这一领域树立了良好的口碑。

  1. 与制药工业的深入合作

除了航空航天领域,Eclipse Magnetics还与制药工业建立了深入的合作关系。在制药过程中,磁铁技术可以用于磁选机,有效地去除原料中的杂质,提高药品的纯度。Eclipse Magnetics根据制药工业的特殊需求,定制了多款磁选机产品,并提供了全面的技术支持和售后服务。通过与制药工业的深入合作,Eclipse Magnetics不仅拓展了市场,也提升了自身的技术实力。

  1. 在汽车制造行业的应用

随着汽车制造业的快速发展,Eclipse Magnetics也看到了磁铁技术在该领域的广阔前景。公司针对汽车制造中的各个环节,研发了多款适用于不同场景的磁性解决方案。例如,在齿轮箱轴制造过程中,Eclipse Magnetics的磁性过滤器可以保持冷却液的清洁,提高生产效率和产品质量。这些解决方案不仅满足了汽车制造业的需求,也进一步巩固了Eclipse Magnetics在电子行业中的地位。

  1. 创新研发与可持续发展

作为一家专注于磁性技术的公司,Eclipse Magnetics始终将创新作为发展的核心动力。公司不断投入研发资源,推动磁铁技术的不断进步。同时,Eclipse Magnetics也关注可持续发展问题,致力于研发环保、高效的磁性产品。通过创新研发和可持续发展战略的实施,Eclipse Magnetics在电子行业中保持了领先地位,并为未来的发展奠定了坚实的基础。

请注意,以上内容仅为故事线索的概括描述,具体的故事细节和数据需要根据Eclipse Magnetics公司的实际情况进行补充和完善。

申风(everanalog)公司的发展小趣事

随着技术实力的不断提升和产品线的日益丰富,申风(everanalog)公司开始积极拓展市场。公司凭借优质的产品和服务,逐渐在国内市场上树立了良好的品牌形象。同时,公司也积极开展国际合作,与国际知名企业建立了战略合作关系,共同推动集成电路产业的发展。这些合作不仅为公司带来了更多的商业机会,也提升了公司在国际市场上的竞争力。

ERP Power公司的发展小趣事

在这个故事中,我们将看到ERP Power如何与HANA技术相结合,为一家电子企业提供了强大的数据支持和分析能力。通过实施基于HANA的ERP Power系统,该企业成功实现了数字化转型,提高了生产效率和产品质量。

AntennaHome公司的发展小趣事

为了进一步提升品牌影响力和市场知名度,AntennaHome公司积极参与国际电子行业的各大展会。在展会上,公司展示了最新的天线技术和产品,吸引了众多国内外客户的关注。通过与客户的深入交流,公司不仅收获了宝贵的市场信息和合作机会,还进一步提升了品牌在行业内的地位。

BTCPower公司的发展小趣事

随着全球环保意识的提高,绿色发展成为电子行业的重要趋势。BTCPower积极响应这一趋势,将绿色发展理念融入公司的产品和服务中。公司致力于研发更环保、更节能的产品,同时还推动供应链中的合作伙伴共同实现绿色生产。这些努力使得BTCPower在行业中树立了良好的环保形象。

问答坊 | AI 解惑

前几天终于调试好的一款带字库128×128点阵模块[资料已发布]

开发这款128×128点阵液晶模块有以下几个特点: 1、自带6×10、8×16点的ASCII吗西文字符库;2、自带12×12、16×16点的一级、二级中文汉字库;3、自带基本GUI绘图功能(绘点、直线、矩形、矩形框、实心圆、圆框);4、自带整型数显示功能,直接输 ...…

查看全部问答>

如何在modelsim中仿真ram

我用的altera的芯片,quartus+modelsim,以前做过仿真ROM的,就是将mif文件通过quartus转换成hex文件,再修改modelsim的一个安装文件,不知道RAM的仿真是不是也是这么做 我把quartus中通过向导生成的RAM的.v文件拷贝到modelsim中不能用说是端口没 ...…

查看全部问答>

ARM 嵌入式main()的运行过程

刚入手嵌入式, 看了一些资料, 有一点不是很明白,就是在做完初始化init.s的操作之后,系统转入main()入口,那么这之后系统是如何捕获消息并触发相应的时间的??应该在哪写这些代码呢??…

查看全部问答>

编译好的elf文件会被程序烧写器烧写到flash的什么位置?

问一个嵌入式开发中比较基础的问题。 编译好的elf文件会被程序烧写器烧写到flash的什么位置?flash中会包含efl头,短头表吗?是不是和链接文件有关? 我的开发环境是mpc55xx + windriver编译器 烧写器是multi usb for mpc55xx. 我的链接文件: ...…

查看全部问答>

制作LED日光灯电源全过程

replyreload += \',\' + 763499;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

组网时zigbee节点允许的移动速度最大是多少?

要做移动节点组网,想知道用zigbee能否实现?组网时节点的最大移动速度是多少?多谢!…

查看全部问答>

农大电视遥控解码

农大寝室电视遥控红外解码按键0到9的解码。   今天试了我n++的时间才试出来的解码 除了前引导码。后面就是就只有24位码。。。 这24位码应该是这样的:前12位为正常的码。后12位为饭码; 但是我感觉正常码最前面几个位应该还是地址码 ...…

查看全部问答>

有关N,P,K含量测定的问题

请问谁知道有什么传感器可以检测农田里面的N,P,K含量嘛?在网上找了好久没找到,都是用化学法或光谱法来测定而且好多停留在实验室内,希望各位朋友可以提些建设性的意见!…

查看全部问答>

基于Hercules的惯性导航系统

通过 Hercules AD读取传感器坐标信息和加速度信息,然后使用Hercules强大的运算处理能力计算运动路径。我就是一说,不知道可行不。…

查看全部问答>