EDN首页   博客首页

最新日志

发表于:2007-9-21 22:28:52
标签:无标签

0

劝诫

        给学电子的同学们转一好帖,对照它试着掂量一下自己,克制自己浮躁的学习态度。确实,学技术的不能浮躁,不能眼高手低,应该注重基础。

                    

 请不要做浮躁的电子工程师 

                  1. 不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。

                  2.初学者请不要看太多的书那会误人子弟的。先找一本好书系统的学习。很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。

                  3. 看帮助。不要因为很难,而自己又是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,或不够直观。


                  4. 不要被一些专用词汇所迷惑;最根本的是先了解最基础知识。

                  5. 不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸出很多知识点;不会举一反三你就永远学不会。

                  6. 知道一点东西,并不能说明你会用,会用是需要实践经验和时间积累的。

                  7. 入门并不难,难的是长期坚持实践和不遗余力的学习和实践。

                  8. 看再多的书是学不会用的,要多实践,多动手。

                  9. 把时髦的技术挂在嘴边,还不如把基本的技术记在心里。

                  10.在任何时刻都不要认为自己手中的书已经足够了。

                  11.看得懂的书,请仔细看;看不懂的书,请硬着头皮看。

                  12.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍。

                  13.请把书上的例子亲手去实践一下。

                  14.把在书中看到的有意义的例子进行扩充;并将其切实的运用到自己的设计中。

                  15.不要漏掉书中任何一个练习和实例——请全部做完并记录下思路。

                  16.别心急,应用确实不容易,水平是在不断的实践中完善和发展的。

                  17.每学到一个知识点的时候,尝试着对别人讲解这个知识点并让他理解----你能讲清楚才说明你真的理解了。

                  18.记录下在和别人交流时发现的自己忽视或不理解的知识点。

                  19.保存好你做过的所有的源文件----那是你最好的积累之一。

                  20.对于网络,还是希望大家能多利用一下。很多问题不是非要到论坛来问的,首先你要学会自己找答案,比如google、百度都是很好的搜索引擎,你只要输入关键字就能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!


                  21.到一个论坛,你要学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己的帖子没人回的。


                  22.虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是

                  大家讨论的地方,如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你讨论呢。

                  浮躁的人容易问:我到底该学什么;----别问,学就对了;

                  浮躁的人容易问:有钱途吗;----建议你去抢银行算了;

                  浮躁的人容易说:我要中文版!我英文不行!----不行?学呀!

                  浮躁的人分两种:只观望而不学的人;只学而不坚持的人;

                  浮躁的人永远不是(也成不了)一个高手。

系统分类: 自由话题   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(400)
发表于:2007-9-14 22:25:59
标签:无标签

0

FPGA开发软件Quartus7.1破解版

QuartusII更新快啊,喜欢体验新功能的要赶紧下了

 ftp://ftp.altera.com/outgoing/release/71_quartus_windows.exe   (1.44GB)

http://kingmoon.blogbus.com/files/11787042250.rar

介绍如下:

在FPGA、CPLD和结构化ASIC设计上,Quartus® II 软件7.1的性能和效能首屈一指。这一版本新增加了对Arria™ GX FPGA的支持,该器件是Altera新的低成本器件系列,该系列带有收发器,针对协议应用进行了优化。软件缩短了按键式编译的时间,进一步扩大了Quartus II 软件的效能优势——比最相近的65nm竞争FPGA快两倍。7.1版还对SOPC Builder工具进行了改进。新的基础结构支持交互性能更好的GUI,可快速实现大型系统,提供扩展知识产权(IP)支持。

Arria GX FPGA支持Quartus II 为Arria GX FPGA提供完整的设计流程支持,包括:

  • TimeQuest时序分析器——迅速简捷地实现时序逼近
  • 渐进式编译——帮助您尽快完成设计
  • PowerPlay功耗优化工具——降低功耗
  • SOPC Builder和DSP Builder ——进行系统级设计
  • 支持PCI Express (x1, x4)、千兆以太网和Serial RapidIO™ 协议

编译时间比65nm竞争FPGA快两倍Quartus II 软件7.1更加注重提高效能,和Quartus II 软件7.0相比,编译时间进一步缩短了30%。Quartus II 软件7.1比最相近的65nm竞争产品编译时间快两倍。此外, Quartus II 仍然是唯一由 FPGA 供应商提供的多处理器 ( 例如,Intel的Core 2 Duo和AMD的Athlon 64 x2)支持软件,它充分利用了当今的双核和四核计算机的性能优势。7.1版对多处理器的支持使得编译时间比单核计算机的情况缩短了20%,可以更迅速地完成设计。Quartus II 软件7.1还含有新的编译时间向导,帮助您以最快的速度完成编译。
SOPC BuilderQuartus II 软件 7.1 引入的SOPC Builder在基础结构上进行了改进,支持交互性能更好的 GUI ,可快速实现大型系统。7.1版的新功能还包括 Avalon® 存储器映射时钟交叉桥、流水线桥以及散射收集 DMA 控制器,进一步提高了系统性能。这一版本还包括扩展 SOPC Builder 可用 IP 内核,含 DDR/DDR2 高性能控制器、Serial RapidIO 、 PCI Express (x1, x4) 和三速以太网 MegaCore® 功能。最后,SOPC Builder现在支持新的Avalon流接口,适合在两个IP块之间发送流数据。
其他增强功能

  • 新的在系统源和探测编辑器—— 在系统源和探测功能缩短了 FPGA 验证时间,在器件运行期间,可以对设计加载激励,采样内部节点。
  • 更快的 TimeQuest 时序分析器—— 轻松地从 Altera 标准时序分析器转换,尽快完成时序逼近,减少编译时间,占用更少的存储器资源,从而提高了效能。
  • 更新并行闪存加载—— 更快的器件配置,闪存编程时间缩短两倍,支持闪存器件的突发模式。
  • 扩展综合—— 新的文本编辑器、新的 HDL 模板以及真正的双端口 RAM ,更快地完成设计输入。
  • 可用性增强—— 利用高级 Quartus II 消息控制台功能,简化了设计过程,加速了结束过程。
  • 智能通告—— 通过 Quartus II 新软件、服务包和关键问题桌面系统,自动提醒设计人员,使工程师能够了解最新信息。

器件支持

  • Arria GX FPGA —— 增加了对 Arria GX 系列所有型号的支持,包括 EP1AGX20 、 EP1AGX35 、 EP1AGX50 、 EP1AGX60 和 EP1AGX90 。
  • Cyclone® III FPGA —— 增加了对第一款 Cyclone III EP3C25 器件的编程支持,增加了对低密度 Cyclone III EP3C5 器件的设计支持。
  • Stratix® III FPGA —— 增加了对 Stratix III 系列的设计支持。 Quartus II 软件支持 Stratix III E 和 Stratix L 系列的所有型号,以及 Stratix III EP3SL50、 EP3SL110 和 EP3E80。

系统分类: DSP   |    用户分类:    |    来源: 转贴

评论(6) | 阅读(4154)
发表于:2007-9-11 9:39:46
标签:无标签

0

PCB常用元件封装

doc

系统分类: PCB   |    用户分类:    |    来源: 整理

评论(0) | 阅读(674)
发表于:2007-9-11 9:34:02
标签:无标签

1

评论(1) | 阅读(857)
发表于:2007-9-11 9:26:46
标签:无标签

1

C语言的延时计算

C51中精确的延时与计算的实现

C51由于其可读性和可移植性很强,在单片机中得到广泛的应用,
但在某些时候由于C51编写的程序对在有精确时间要求下,可能
就得要用汇编语言来编写,但在C51是否也能实现时间的精确控
制呢?答案是肯定的。
 
在C51中要实现对时间的精确延时有以下几种方法

其一:对于延时很短的,要求在us级的,采用“_nop_”函数,
这个函数相当汇编NOP指令,延时几微秒,就插入个这样的函数。
NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M
晶振,延时1uS。

其二:对于延时比较长的,要求在大于10us,采用C51中的循环
语句来实现。
在选择C51中循环语句时,要注意以下几个问题
第一、定义的C51中循环变量,尽量采用无符号字符型变量。
第二、在FOR循环语句中,尽量采用变量减减来做循环。
第三、在do…while,while语句中,循环体内变量也采用减减方法。
这因为在C51编译器中,对不同的循环方法,采用不同的指令来完
成的。下面举例说明:
unsigned char I;
for(i=0;i<255;i++);
 
unsigned char I;
for(i=255;i>0;i--);
其中,第二个循环语句C51编译后,就用DJNZ指令来完成,相当于如下指令:
MOV 09H,#0FFH
LOOP:            DJNZ 09H,LOOP
指令相当简洁,也很好计算精确的延时时间。
同样对do…while,while循环语句中,也是如此
例:
unsigned char n;
n=255;
do{n--}
while(n);

n=255;
while(n)
{n--};
这两个循环语句经过C51编译之后,形成DJNZ来完成的方法,
故其精确时间的计算也很方便。


其三:对于要求精确延时时间更长,这时就要采用循环嵌套
的方法来实现,因此,循环嵌套的方法常用于达到ms级的延时。
对于循环语句同样可以采用for,do…while,while结构来完
成,每个循环体内的变量仍然采用无符号字符变量。
unsigned char i,j
for(i=255;i>0;i--)
for(j=255;j>0;j--);

unsigned char i,j
i=255;
do{j=255;
     do{j--}
     while(j);
     i--;
    }
while(i);

unsigned char i,j
i=255;
while(i)
{j=255;
while(j)
{j--};
i--;
}
这三种方法都是用DJNZ指令嵌套实现循环的,由C51编
译器用下面的指令组合来完成的
MOV R7,#0FFH
LOOP2:         MOV R6,#0FFH
LOOP1:         DJNZ R6,LOOP1
DJNZ R7,LOOP2
这些指令的组合在汇编语言中采用DJNZ指令来做延时用,
因此它的时间精确计算也是很简单,假上面变量i的初
值为m,变量j的初值为n,则总延时时间为:m×(n×T+T),
其中T为DJNZ指令执行时间(DJNZ指令为双周期指令)。
这里的+T为MOV这条指令所使用的时间。
同样对于更长时间的延时,可以采用多重循环来完成。
只要在程序设计循环语句时注意以上几个问题。


下面给出有关在C51中延时子程序设计时要注意的问题
1、在C51中进行精确的延时子程序设计时,尽量不要
或少在延时子程序中定义局部变量,所有的延时子程
序中变量通过有参函数传递。
2、在延时子程序设计时,采用do…while,结构做循
环体要比for结构做循环体好。
3、在延时子程序设计时,要进行循环体嵌套时,采用
先内循环,再减减比先减减,再内循环要好。
unsigned char delay(unsigned char i,unsigned char j,unsigned char k)
{unsigned char b,c;
    b="j";
    c="k";
    do{
do{
     do{k--};
     while(k);
     k="c";
     j--;};
while(j);
j=b;
i--;};
    while(i);
}
这精确延时子程序就被C51编译为有下面的指令组合完成
delay延时子程序如下:
                MOV       R6,05H
                MOV       R4,03H
C0012:        DJNZ       R3, C0012
                MOV       R3,04H
                DJNZ      R5, C0012
                MOV       R5,06H
                DJNZ      R7, C0012
                RET    
假设参数变量i的初值为m,参数变量j的初值为n,参数
变量k的初值为l,则总延时时间为:l×(n×(m×T+2T)+2T)+3T,
其中T为DJNZ和MOV指令执行的时间。当m=n=l时,精确延时为9T,最短;
当m=n=l=256时,精确延时到16908803T,最长。
 
-----------------------------------------------------------------------------------------

采用软件定时的计算方法

利用指令执行周期设定,以下为一段延时程序:      
指令             周期  
MOV             1
DJNZ             2
NOP             1
采用循环方式定时,有程序:
            MOV      R5,#TIME2           ;周期1
LOOP1:      MOV      R6,#TIME1           ; 1
LOOP2:      NOP                        ; 1
       NOP                         ; 1
       DJNZ    R6,LOOP2              ; 2
            DJNZ      R5,LOOP1            ; 2
定时数=(TIME1*4+2+1)*TIM2*2+4 
 

系统分类: 单片机   |    用户分类:    |    来源: 整理

评论(0) | 阅读(1146)
发表于:2007-9-11 9:22:09
标签:无标签

2

几个C语言延时程序

/*------------------------------------------------------------------
函数全称:50us 延时
注意事项:基于1MIPS,AT89系列对应12M晶振,W77、W78系列对应3M晶振
例子提示:调用delay_50us(20),得到1ms延时
输 入:
返 回:无
------------------------------------------------------------------*/
void delay_50us(uint t)
{
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--)

}

/*******************************************************************
delay_50us(1):延时63us 63-50=13
delay_50us(10):延时513us 513-500=13
delay_50us(100):延时5013us 5013-5000=13
delay_50us(1000):延时50022us 50022-50000=22

延时50ms,误差仅仅22us.
*******************************************************************/

 

/*------------------------------------------------------------------
函数全称:50ms 延时
注意事项:基于1MIPS,AT89系列对应12M晶振,W77、W78系列对应3M晶振
例子提示:调用delay_50ms(20),得到1s延时
全局变量:无
返回: 无
------------------------------------------------------------------*/
void delay_50ms(uint t)
{
uint j;
for(;t>0;t--)
for(j=6245;j>0;j--)

}

/******************************************************************
delay_50ms(1):延时50 010 10us
delay_50ms(10):延时499 983 17us
delay_50ms(100):延时4 999 713 287us
delay_50ms(1000):延时4 997 022 2.978ms

延时50s,误差仅仅2.978ms.
******************************************************************/

系统分类: 单片机   |    用户分类:    |    来源: 整理

评论(0) | 阅读(1236)
发表于:2007-9-11 9:19:10
标签:无标签

1

评论(5) | 阅读(955)
发表于:2007-9-10 22:18:42
标签:无标签

1

T6963C编程指南

rar

系统分类: 单片机   |    用户分类:    |    来源: 整理

评论(0) | 阅读(409)
发表于:2007-9-10 22:09:49
标签:无标签

0

评论(1) | 阅读(791)
发表于:2007-9-10 21:43:51
标签:单片机程序  

1

AD9835程序

/******************************
       AD9835程序
******************************/
#include
#define FMCLK 50
/*AD9835*/
sbit D_CS = P1^5;
sbit D_SDA = P1^7;
sbit D_SCLK = P1^6;

sbit LED = P1^1;

void SendData(unsigned int d)
{
unsigned char i;
D_CS = 0;
for(i=0;i<16;i++ )
{
d<<=1;
D_SDA=CY;
D_SCLK=1;
D_SCLK=0;
}
D_CS = 1;
}

void main(void)
{
unsigned int i;

D_CS = 1;

for(i=0;i<1000;i ){/* //"开机延时 */ }

/****************"初始化 AD9835*****************************/
//Control register write D15 D14 11
// D13 D12 D11
// sleep="1" reset="1" clr="1"
// 1111 1xxx xxxx xxxx
SendData(0xf800);

//Setting SYNC and SELSRC D15 D14 10
//D13 SYNC==1
//D12 SELSRC="0" 0/1 using the pins/bits FSELECT,PSEL0 and PSEL1
// 1010 xxxx xxxx xxxx
SendData(0xa000);

//write initial data
//输出14.8 f1=14.8-0.2=14.6 f0=14.8 0.2=15 fmclk="50"
//14.6 freg1 = fout0/fmclk*2^32 = 1254130450.432 = 1254130450
// = 0x 4A C0 83 12 实际14.599999995
//15 freg0 = fout1/fmclk*2^32 = 1288490188.8 = 1288490188
// = 0x 4c cc cc cc 实际14.999999991

//f1=14.8-0.05=14.75 f0=14.85 fmclk="50MHz"
//freg1=14.75/50*2^32=0x4b851eb8
//freg0=14.85/50*2^32=0x4c083126

//"高8位是固定的,具体看手册
//0011 0000 freg0 L LSBS
//0010 0001 freg0 H LSBS
//0011 0010 freg0 L MSBS
//0010 0011 freg0 H MSBS
//50M 14.6M 1254130450=0x 4A C0 83 12
SendData(0x3012);
SendData(0x2183);
SendData(0x32c0);
SendData(0x234a);

 

//"高8位是固定的,具体看手册
//0011 0100 freg1 L LSBS cc
//0010 0101 freg1 H LSBS cc
//0011 0110 freg1 L MSBS cc
//0010 0111 freg1 H MSBS 4c

//50M 15M 1288490188=0x4c cc cc cc
SendData(0x34cc);
SendData(0x25cc);
SendData(0x36cc);
SendData(0x274c);

//phase
//0001 1000 phase0 LSBS
//0000 1001 phase0 MSBS
//0001 1010 phase1 LSBS
//0000 1011 phase1 MSBS
//0001 1100 phase2 LSBS
//0000 1101 phase2 MSBS
//0001 1110 phase3 LSBS
//0000 1111 phase3 MSBS
SendData(0x1800);
SendData(0x0900);
SendData(0x1a00);
SendData(0x0b00);
SendData(0x1c00);
SendData(0x0d00);
SendData(0x1e00);
SendData(0x0f00);

//Control register write D15 D14 11
// D13 D12 D11
// sleep="0" reset="0" clr="0"
// 1100 0xxx xxxx xxxx
SendData(0xc000);

while(1);
}

系统分类: 单片机   |    用户分类:    |    来源: 无分类

评论(6) | 阅读(672)
2下一页总共 , 当前 /