最新日志

发表于:2007-11-26 15:03:36
标签:无标签

0

Visual C++中使用gotoxy() / clrscr()等函数

#include < windows.h >

void clrscr(void);
void clreol(void);
void clreoscr(void);
void gotoxy(int ,int );

// --- Funktionsimplementierung

/*********************************************************************************/

void clrscr(void)  //clearscreen: gesamten Bildschirm leeren
{
    CONSOLE_SCREEN_BUFFER_INFO    csbiInfo;                            //variablendklaration
    HANDLE    hConsoleOut;
    COORD    Home = {0,0};
    DWORD    dummy;

    hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
    GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);

    FillConsoleOutputCharacter(hConsoleOut,' ',csbiInfo.dwSize.X * csbiInfo.dwSize.Y,Home,&dummy);    //bis cursorposition leerzeichen ausgeben
    csbiInfo.dwCursorPosition.X = 0;                                    //cursorposition X koordinate festlegen
    csbiInfo.dwCursorPosition.Y = 0;                                    //cursorposition Y koordinate festlegen
    SetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCursorPosition);    //den cursor an die festgelegte koordinate setzen
}

/*********************************************************************************/

void clreol(void)  //clear end of line: den rest der Zeile nach dem cursor l鰏chen
{
    CONSOLE_SCREEN_BUFFER_INFO        csbiInfo;                            //variablendklaration
    HANDLE    hConsoleOut;
    COORD    Home,pos;
    DWORD    dummy;

    hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
    GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);

    Home = csbiInfo.dwCursorPosition;
    pos.X = 80 - csbiInfo.dwCursorPosition.X;

    FillConsoleOutputCharacter(hConsoleOut,' ',pos.X,Home,&dummy);
}

/*********************************************************************************/

void clreoscr(void)  //clear end of screen: alles nach dem cursor l鰏chen
{
    CONSOLE_SCREEN_BUFFER_INFO        csbiInfo;                            //variablendklaration
    HANDLE    hConsoleOut;
    COORD    Home;
    DWORD    dummy;

    hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
    GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);

    Home=csbiInfo.dwCursorPosition;
    FillConsoleOutputCharacter(hConsoleOut,' ',csbiInfo.dwSize.X * csbiInfo.dwSize.Y,Home,&dummy);
}

/*********************************************************************************/

void gotoxy(int x,int y)  //cursor an gewuenschte position auf dem bildschirm setzen
{
    CONSOLE_SCREEN_BUFFER_INFO        csbiInfo;                            //variablendklaration
    HANDLE    hConsoleOut;

    hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
    GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);

    csbiInfo.dwCursorPosition.X = x;                                    //cursorposition X koordinate festlegen
    csbiInfo.dwCursorPosition.Y = y;                                    //cursorposition Y koordinate festlegen
    SetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCursorPosition);    //den cursor an die festgelegte koordinate setzen
}


点击此处查看原文 >>

系统分类: 软件开发   |    用户分类:    |    来源: 无分类

评论(1) | 阅读(648)
发表于:2007-11-15 11:38:57
标签:无标签

0

putchar()、getch()、getche()和getchar()函数

getch()、getche()和getchar()函数
    (1) getch()和getche()函数
    这两个函数都是从键盘上读入一个字符。其调用格式为:
     getch();
     getche();
    两者的区别是: getch()函数不将读入的字符回显在显示屏幕上, 而getche()
函数却将读入的字符回显到显示屏幕上。
    例1:
     #include
     main()
     {
          char c, ch;
          c="getch"();     /*从键盘上读入一个字符不回显送给字符变量c*/
          putchar(c);    /*输出该字符*/
          ch="getche"();   /*从键盘上带回显的读入一个字符送给字符变量ch*/
          putchar(ch);
     }
    利用回显和不回显的特点, 这两个函数经常用于交互输入的过程中完成暂停
等功能。
    例2:
     #include
     main()
     {
          char c, s[20];
          printf("Name:");
          gets(s);
          printf("Press any key to confinue...");
          getch();  /*等待输入任一键*/
     }
 
    (2) getchar()函数
    getchar()函数也是从键盘上读入一个字符, 并带回显。它与前面两个函数
的区别在于: getchar()函数等待输入直到按回车才结束,  回车前的所有输入字
符都会逐个显示在屏幕上。但只有第一个字符作为函数的返回值。
    getchar()函数的调用格式为:
     getchar();
    例3:
     #include
     main()
     {
          char c;
          c="getchar"();   /*从键盘读入字符直到回车结束*/
          putchar(c);    /*显示输入的第一个字符*/
          getch();       /*等待按任一健*/
     }

点击此处查看原文 >>

系统分类: 资源共享   |    用户分类:    |    来源: 整理

评论(0) | 阅读(501)
发表于:2007-11-6 21:10:46
标签:无标签

0

VM TOOLS安装

以ROOT身份进入Redhat linux9.0以后,会发现我们并没有真正的安装上了VMWARE TOOLS软件包,这个时候需要点击“虚拟”--》“安装虚拟工具”,

mount /dev/cdrom /mnt/cdrom (加载光驱)
cd /mnt/cdrom (切换到光驱盘符下)
ls (相当于DOS中的DIR)
cp vmware-linux-tools.tar.gz /tmp(复制相当如DOS中的copy)
(以上的步骤我没成功过,所以只好采用桌面形式了)
cd /tmp
tar zxf vmware-linux-tools.tar.gz (解压缩)
ls
cd vmware-tools-distrib
./vmware-install.pl (正式安装)

点击此处查看原文 >>

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

评论(0) | 阅读(539)
发表于:2007-11-3 16:49:27
标签:无标签

2

用全加器实现逻辑函数

瑞芯微电子的一道笔试题

f(x1,x2,x3) = E(0,2,3,5,6,7) 试用全加器实现。

 

在网上搜到一篇论文讲的挺全,上传共享。

pdf

但还是有点没看明白,感觉技巧性太强。

点击此处查看原文 >>

系统分类: CPLD/FPGA   |    用户分类:    |    来源: 原创

评论(1) | 阅读(594)
发表于:2007-10-18 23:01:57
标签:无标签

1

Latchup现象和预防措施

Latch up 最易产生在易受外部干扰的I/O电路处, 也偶尔发生在内部电路
Latch up 是指cmos晶片中, 在电源power VDD和地线GND(VSS)之间由于寄生的PNP和NPN双极性BJT相互影响而产生的一低阻抗通路, 它的存在会使VDD和GND之间产生大电流
 
随着IC制造工艺的发展, 封装密度和集成度越来越高,产生Latch up的可能性会越来越大
 Latch up 产生的过度电流量可能会使芯片产生永久性的破坏, Latch up 的防范是IC Layout 的最重要措施之一
产生原因:
       芯片一开始工作时VDD变化导致nwell和P substrate间寄生电容中产生足够的电流,当VDD变化率大到一定地步,将会引起Latch up。
        当I/O的信号变化超出VDD-GND(VSS)的范围时,有大电流在芯片中产生,也会导致SCR的触发。
       ESD静电加压,可能会从保护电路中引入少量带电载子到well或substrate中,也会引起SCR的触发。
       当很多的驱动器同时动作,负载过大使power和gnd突然变化,也有可能打开SCR的一个BJT。
       Well 侧面漏电流过大。
防止Latch up 的方法
          在基体(substrate)上改变金属的掺杂,降低BJT的增益
            避免source和drain的正向偏压
          增加一个轻掺杂的layer在重掺杂的基体上,阻止侧面电流从垂直BJT到低阻基体上的通路
           使用Guard ring: P+ ring环绕nmos并接GND;N+ ring环绕pmos 并接VDD,一方面可以降低Rwell和Rsub的阻值,另一方面可阻止栽子到达BJT的基极。如果可能,可再增加两圈ring。
           Substrate contact和well contact应尽量靠近source,以降低Rwell和Rsub的阻值。
          使nmos尽量靠近GND,pmos尽量靠近VDD,保持足够的距离在pmos 和nmos之间以降低引发SCR的可能
          除在I/O处需采取防Latch up的措施外,凡接I/O的内部mos 也应圈guard ring。
           I/O处尽量不使用pmos(nwell)

点击此处查看原文 >>

系统分类: 模拟技术   |    用户分类:    |    来源: 原创

评论(0) | 阅读(802)
发表于:2007-10-18 16:42:18
标签:无标签

1

N沟道增强型MOS管的工作原理

N沟道增强型MOS管的工作原理

1.vGSiD及沟道的控制作用

(a)
(b)

(c)

图 1

MOS管的源极和衬底通常是接在一起的(大多数管子在出厂前已连接好)。从图1(a)可以看出,增强型MOS管的漏极d和源极s之间有两个背靠背的PN结。当栅-源电压vGS=0时,即使加上漏-源电压vDS,而且不论vDS的极性如何,总有一个PN结处于反偏状态,漏-源极间没有导电沟道,所以这时漏极电流iD≈0。

若在栅-源极间加上正向电压,即vGS>0,则栅极和衬底之间的SiO2绝缘层中便产生一个垂直于半导体表面的由栅极指向衬底的电场,这个电场能排斥空穴而吸引电子,因而使栅极附近的P型衬底中的空穴被排斥,剩下不能移动的受主离子(负离子),形成耗尽层,同时P衬底中的电子(少子)被吸引到衬底表面。当vGS数值较小,吸引电子的能力不强时,漏-源极之间仍无导电沟道出现,如图1(b)所示。vGS增加时,吸引到P衬底表面层的电子就增多,当vGS达到某一数值时,这些电子在栅极附近的P衬底表面便形成一个N型薄层,且与两个N+区相连通,在漏-源极间形成N型导电沟道,其导电类型与P衬底相反,故又称为反型层,如图1(c)所示。vGS越大,作用于半导体表面的电场就越强,吸引到P衬底表面的电子就越多,导电沟道越厚,沟道电阻越小。我们把开始形成沟道时的栅-源极电压称为开启电压,用VT表示。

由上述分析可知,N沟道增强型MOS管在vGSVT时,不能形成导电沟道,管子处于截止状态。只有当vGSVT时,才有沟道形成,此时在漏-源极间加上正向电压vDS,才有漏极电流产生。而且vGS增大时,沟道变厚,沟道电阻减小,iD增大。这种必须在vGSVT时才能形成导电沟道的MOS管称为增强型MOS管。

2.vDSiD的影响

(a)

(b)

(c)

图 2

如图2(a)所示,当vGS>VT且为一确定值时,漏-源电压vDS对导电沟道及电流iD的影响与结型场效应管相似。漏极电流iD沿沟道产生的电压降使沟道内各点与栅极间的电压不再相等,靠近源极一端的电压最大,这里沟道最厚,而漏极一端电压最小,其值为vGD=vGS-vDS,因而这里沟道最薄。但当vDS较小(vDS<vGSVT)时,它对沟道的影响不大,这时只要vGS一定,沟道电阻几乎也是一定的,所以iDvDS近似呈线性变化。

随着vDS的增大,靠近漏极的沟道越来越薄,当vDS增加到使vGD=vGS-vDS=VT(或vDS=vGS-VT)时,沟道在漏极一端出现预夹断,如图2(b)所示。再继续增大vDS,夹断点将向源极方向移动,如图2(c)所示。由于vDS的增加部分几乎全部降落在夹断区,故iD几乎不随vDS增大而增加,管子进入饱和区,iD几乎仅由vGS决定。

 
 
 

点击此处查看原文 >>

系统分类: 汽车电子   |    用户分类:    |    来源: 原创

评论(2) | 阅读(1116)
发表于:2007-10-18 16:03:01
标签:无标签

3

cmos电平和TTL电平

TTL电平:
   输出高电平  〉2.4V         输出低电平 〈0.4V
  在室温下,一般输出高电平是3.5V  输出低电平是0.2V。
   最小输入高电平和低电平
   输入高电平  〉=2.0V          输入低电平  《=0.8V   
它的噪声容限是0.4V.
CMOS电平:
  1逻辑电平电压接近于电源电压,0逻辑电平接近于0V。而且具有很宽的噪声容限。

电平转换电路:因为TTL和COMS的高低电平的值不一样(ttl 5v《==》cmos 3。3v),所以互相连接时需要电平的转换:就
是用两个电阻对电平分压,没有什么高深的东西。哈哈哈


OC门,即集电极开路门电路,它必须外界上拉电阻和电源才能将开关电平作为高低电平用。否则它一般只作为开关大电压和
大电流负载,所以  又叫做驱动门电路。

TTL和COMS电路比较:
1、TTL电路是电流控制器件,而coms电路是电压控制器件。
2、TTL电路的速度快,传输延迟时间短(5-10ns),但是功耗大。
   COMS电路的速度慢,传输延迟时间长(25--50ns),但功耗低。
   COMS电路本身的功耗与输入信号的脉冲频率有关,频率越高,芯片集越热,这是正常现象。
3、COMS电路的锁定效应:
   COMS电路由于输入太大的电流,内部的电流急剧增大,除非切断电源,电流一直在增大。这种效应就是锁定效应。当产生
锁定效应时,COMS的内部电流能达到40mA以上,很容易烧毁芯片。
防御措施:
  (1)、在输入端和输出端加钳位电路,使输入和输出不超过不超过规定电压。
  (2)、芯片的电源输入端加去耦电路,防止VDD端出现瞬间的高压。
  (3)、在VDD和外电源之间加线流电阻,即使有大的电流也不让它进去。
  (4)、当系统由几个电源分别供电时,开关要按下列顺序:开启时,先开启COMS电路得电源,再开启输入信号和负载的电
源;关闭时,先关闭输入信号和负载的电源,再关闭COMS电路的电源。

4、COMS电路的使用注意事项
  (1)、COMS电路时电压控制器件,它的输入总抗很大,对干扰信号的捕捉能力很强。所以,不用的管脚不要悬空,要接上拉
电阻或者下拉电阻,给它一个恒定的电平。
  (2)、输入端接低内组的信号源时,要在输入端和信号源之间要串联限流电阻,使输入的电流限制在1mA之内。
  (3)、当接长信号传输线时,在COMS电路端接匹配电阻。
  (4)、当输入端接大电容时,应该在输入端和电容间接保护电阻。电阻值为R=V0/1mA.V0是外界电容上的电压。
  (5)、COMS的输入电流超过1mA,就有可能烧坏COMS。
   


5、TTL门电路中输入端负载特性(输入端带电阻特殊情况的处理):
  1、悬空时相当于输入端接高电平。因为这时可以看作是输入端接一个无穷大的电阻。
  2、在门电路输入端串联10K电阻后再输入低电平,输入端出呈现的是高电平而不是低电平。因为由TTL门电路的输入端负载
特性可知,只有在输入端接的串联电阻小于910欧时,它输入来的低电平信号才能被门电路识别出来,串联电阻再大的话输入
端就一直呈现高电平。这个一定要注意。
COMS门电路就不用考虑这些了。


6、TTL电路有集电极开路OC门,MOS管也有和集电极对应的漏极开路的OD门,它的输出就叫做开漏输出。
   OC门在截止时有漏电流输出,那就是漏电流,为什么有漏电流呢?那是因为当三机管截止的时候,它的基极电流约等于
0,但是并不是真正的为0,经过三极管的集电极的电流也就不是真正的0,而是约0。而这个就是漏电流。
   开漏输出:OC门的输出就是开漏输出;OD门的输出也是开漏输出。它可以吸收很大的电流,但是不能向外输出的电流。所
以,为了能输入和输出电流,它使用的时候要跟电源和上拉电阻一齐用。

   OD门一般作为输出缓冲/驱动器、电平转换器以及满足吸收大负载电流的需要。
7、什么叫做图腾柱,它与开漏电路有什么区别?

TTL集成电路中,输出有接上拉三极管的输出叫做图腾柱输出,没有的叫做OC门。因为TTL就是一个三级   关,图腾柱也就是
两个三级管推挽相连。所以推挽就是图腾。
一般图腾式输出,高电平400UA,低电平8MA

 

TTL电平(L电平:小于等于0.8V ;H电平:大于等于2V)
COMS电平(L电平:小于等于0.3Vcc ;H电平:大于等于0.7Vcc)

CMOS 器件不用的输入端必须连到高电平或低电平, 这是因为 CMOS 是高输入阻抗器件, 理想状态是没有输入电流的. 如果不用的输入引脚悬空, 很容易感应到干扰信号, 影响芯片的逻辑运行, 甚至静电积累永久性的击穿这个输入端, 造成芯片失效.
另外, 只有 4000 系列的 CMOS 器件可以工作在 15伏电源下, 74HC, 74HCT 等都只能工作在 5伏电源下, 现在已经有工作在 3伏和 2.5伏电源下的 CMOS 逻辑电路芯片了.

 

CMOS电平和TTL电平:CMOS电平电压范围在3~15V,比如4000系列当5V供电时,输出在4.6以上为高电平,输出在0.05V以下为低电平。输入在3.5V以上为高电平,输入在1.5V以下为低电平。而对于TTL芯片,供电范围在0~5V,常见都是5V,如74系列5V供电,输出在2.7V以上为高电平,输出在0.5V以下为低电平,输入在2V以上为高电平,在0.8V以下为低电平。因此,CMOS电路与TTL电路就有一个电平转换的问题,使两者电平域值能匹配。

 

有关逻辑电平的一些概念 :
要了解逻辑电平的内容,首先要知道以下几个概念的含义:
1:输入高电平(Vih): 保证逻辑门的输入为高电平时所允许的最小输入高电平,当输入电平高于Vih时,则认为输入电平为高电平。
2:输入低电平(Vil):保证逻辑门的输入为低电平时所允许的最大输入低电平,当输入电平低于Vil时,则认为输入电平为低电平。
3:输出高电平(Voh):保证逻辑门的输出为高电平时的输出电平的最小值,逻辑门的输出为高电平时的电平值都必须大于此Voh。
4:输出低电平(Vol):保证逻辑门的输出为低电平时的输出电平的最大值,逻辑门的输出为低电平时的电平值都必须小于此Vol。
5:阀值电平(Vt):数字电路芯片都存在一个阈值电平,就是电路刚刚勉强能翻转动作时的电平。它是一个界于Vil、Vih之间的电压值,对于CMOS电路的阈值电平,基本上是二分之一的电源电压值,但要保证稳定的输出,则必须要求输入高电平> Vih,输入低电平<Vil,而如果输入电平在阈值上下,也就是Vil~Vih这个区域,电路的输出会处于不稳定状态。
对于一般的逻辑电平,以上参数的关系如下:
Voh > Vih > Vt > Vil > Vol。
6:Ioh:逻辑门输出为高电平时的负载电流(为拉电流)。
7:Iol:逻辑门输出为低电平时的负载电流(为灌电流)。
8:Iih:逻辑门输入为高电平时的电流(为灌电流)。
9:Iil:逻辑门输入为低电平时的电流(为拉电流)。
门电路输出极在集成单元内不接负载电阻而直接引出作为输出端,这种形式的门称为开路门。开路的TTL、CMOS、ECL门分别称为集电极开路(OC)、漏极开路(OD)、发射极开路(OE),使用时应审查是否接上拉电阻(OC、OD门)或下拉电阻(OE门),以及电阻阻值是否合适。对于集电极开路(OC)门,其上拉电阻阻值RL应满足下面条件:
(1): RL < (VCC-Voh)/(n*Ioh+m*Iih)
(2):RL > (VCC-Vol)/(Iol+m*Iil)
其中n:线与的开路门数;m:被驱动的输入端数。
:常用的逻辑电平
·逻辑电平:有TTL、CMOS、LVTTL、ECL、PECL、GTL;RS232、RS422、LVDS等。
·其中TTL和CMOS的逻辑电平按典型电压可分为四类:5V系列(5V TTL和5V CMOS)、3.3V系列,2.5V系列和1.8V系列。
·5V TTL和5V CMOS逻辑电平是通用的逻辑电平。
·3.3V及以下的逻辑电平被称为低电压逻辑电平,常用的为LVTTL电平。
·低电压的逻辑电平还有2.5V和1.8V两种。
·ECL/PECL和LVDS是差分输入输出。
·RS-422/485和RS-232是串口的接口标准,RS-422/485是差分输入输出,RS-232是单端输入输出。


点击此处查看原文 >>

系统分类: 模拟技术   |    用户分类:    |    来源: 原创

评论(0) | 阅读(1021)
发表于:2007-10-18 13:48:37
标签:无标签

1

什么叫做OTP片、掩膜片,两者的区别何在?

OTP means one time program,一次性编程

MTP means multi time program,多次性编程

OTPOne Time Program)是MCU的一种存储器类型

MCU按其存储器类型可分为MASK(掩模)ROMOTP(一次性可编程)ROMFLASHROM等类型。

MASKROMMCU价格便宜,但程序在出厂时已经固化,适合程序固定不变的应用场合;

FALSHROMMCU程序可以反复擦写,灵活性很强,但价格较高,适合对价格不敏感的应用场合或做开发用途;

OTP ROMMCU价格介于前两者之间,同时又拥有一次性可编程能力,适合既要求一定灵活性,又要求低成本的应用场合,尤其是功能不断翻新、需要迅速量产的电子产品。

点击此处查看原文 >>

系统分类: 自由话题   |    用户分类:    |    来源: 原创

评论(0) | 阅读(941)
发表于:2007-10-15 22:51:31
标签:无标签

1

时序Case和组合Case资源比较

同学问我一道O2的笔试题,

module   C_case1(clk,out1);
input  clk;
output out1;

reg  state1;
reg  out1;


always @(posedge clk)
  case(state1)
   0: state1<=1;
 1: state1<=0;
  endcase
always @(state1)
  case(state1)
   0: out1<=1;
 1: out1<=0;
 endcase
endmodule

 

 module   C_case2(clk,out2);
input  clk;
output out2;

reg  state2;
reg  out2;
 
 always @(posedge clk)

  case(state2)
   0:begin
 state2<=1;
   out2<=1;
   end
 1:begin
 state2<=0;
   out2<=0;
   end
   endcase
 
 
 endmodule

 

两者资源比较。

在Quartus综合结果如下:

第一种:

点击看大图

组合Case

第二种:

点击看大图

时序Case

 

明显第一种比第二种省个触发器

工程文件打包如下:

rar

点击此处查看原文 >>

系统分类: CPLD/FPGA   |    用户分类:    |    来源: 原创

评论(2) | 阅读(535)
发表于:2007-7-31 11:40:25
标签:ARM  ADS  汇编  

1

ARM开发环境及汇编实验1

采用ADS1.2集成开发环境。

首先先阅读文档《ADS集成开发环境及仿真器应用》rar

(1)建立新工程

点击看大图

(2)建立一个简单的汇编源文件,并添加到工程中

点击看大图

   AREA Example1,CODE,READONLY ; 声明代码段Example1
   ENTRY              ; 标识程序入口
   CODE32       ; 声明32位ARM指令
START    MOV  R0,#15        ; 设置参数
   MOV  R1,#8
   ADDS R0,R0,R1    ; R0 = R0 + R1
   
   B  START
   
   END  

rar

(3)设置文本编辑器支持中文

ADS安装后默认字体是Courier New,对于中文支持不完善,建议如下设置

点击看大图

(4)设置编译连接控制选项

Edit->DebugRel Setting...,选择ARM Linker项,Output页设置连接地址,

点击看大图

Options页设置调试入口地址

点击看大图

(5)选择Project->Make编译整个工程,如无错,即可进入仿真

(6)选择Project->Debug启动AXD进入调试。选择ARMUL,在Options->Config Target中

工程模板作用:编译控制设置

强行编译工程所有文件:选择Project->Remove Object Code 删除工程中的*.obj文件

ARM指令参考资料:

常用ARM 指令集及汇编rar  ARM指令速查手册rar

 

 

点击此处查看原文 >>

系统分类: ARM   |    用户分类:    |    来源: 原创

评论(0) | 阅读(946)
总共 , 当前 /,234下一页