侵权投诉

基于gcc将C语言变量与指令操作数相关联

Linuxer 2018-01-16 14:55 次阅读

有时候我们希望在C++/C++代码中使用嵌入式汇编,因为C中没有对应的函数或语法可用。比如我最近在ARM上写FIR程序时,需要对最后的结果进行饱和处理,但gcc没有提供ssat这样的函数,于是不得不在C代码中嵌入汇编指令。

1. 入门

在C中嵌入汇编的最大问题是如何将C语言变量与指令操作数相关联。当然,gcc都帮我们想好了。下面是是一个简单例子。

asm(“fsinx %1, %0”:”=f”(result):”f”(angle));

这里我们不需要关注fsinx指令是干啥的;只需要知道这条指令需要两个浮点寄存器作为操作数。作为专职处理C语言的gcc编译器,它是没办法知道fsinx这条汇编指令需要什么样的操作数的,这就要求程序猿告知gcc相关信息,方法就是指令后面的”=f”和”f”,表示这是两个浮点寄存器操作数。这被称为操作数规则(constraint)。规则前面加上”=”表示这是一个输出操作数,否则是输入操作数。constraint后面括号内的是与该寄存器关联的变量。这样gcc就知道如何将这条嵌入式汇编语句转成实际的汇编指令了:

fsinx:汇编指令名

%1, %0:汇编指令操作数

“=f”(result):操作数%0是一个浮点寄存器,与变量result关联(对输出操作数,“关联”的意思就是说gcc执行完这条汇编指令后会把寄存器%0的内容送到变量result中)

“f”(angle):操作数%1是一个浮点寄存器,与变量angle关联(对输入操作数,“关联”的意思是就是说gcc执行这条汇编指令前会先将变量angle的值读取到寄存器%1中)

因此这条嵌入式汇编会转换为至少三条汇编指令(非优化):

将angle变量的值加载到寄存器%1

fsinx汇编指令,源寄存器%1,目标寄存器%0

将寄存器%0的值存储到变量result

当然,在高优化级别下上面的叙述可能不适用;比如源操作数可能本来就已经在某个浮点寄存器中了。

这里我们也看到constraint前加”=”符号的意义:gcc需要知道这个操作数是在执行嵌入汇编前从变量加载到寄存器,还是在执行后从寄存器存储到变量中。

常用的constraints有以下几个(更多细节参见gcc手册):

m    内存操作数

r    寄存器操作数

i    立即数操作数(整数)

f    浮点寄存器操作数

F   立即数操作数(浮点)

从这个栗子也可以看出嵌入式汇编的基本格式:

asm(“汇编指令”:”=输出操作数规则”(关联变量):”输入操作数规则”(关联变量));

输出操作数必须为左值;这个显然。

2. 多个操作数,或没有输出操作数

如果某个指令有多个输入或输出操作数怎么办?例如arm有很多指令是三操作数指令。这个时候用逗号分隔多个规则:

asm(“add %0, %1, %2”:”=r”(sum):”r”(a), “r”(b));

每条操作数规则按顺序对应操作数%0, %1, %2。

对于没有输出操作数的情况,在汇编指令后就没有输出规则,于是就出现两个连续冒号,后跟输入规则。

3. 输入-输出(或读-写)操作数

有时候一个操作数既是输入又是输出,比如x86下的这条指令:

add %eax, %ebx

注意指令使用AT&T格式而不是Intel格式。寄存器ebx同时作为输入操作数和输出操作数。对这样的操作数,在规则前使用”+”字符

asm("add %1, %0" : "+r"(a) : "r"(b));

对应C语言语句a=a+b。

注意这样的操作数不能使用”=”符号,因为gcc看到”=”符号会认为这是一个单输出操作数,于是在将嵌入汇编转换为真正汇编的时候就不会预先将变量a的值加载到寄存器%0中。

另一个办法是将读-写操作数在逻辑上拆分为两个操作数:

asm(“add %2, %0” : “=r”(a) : “0”(a), “r”(b));

对“逻辑”输入操作数1指定数字规则”0”,表示这个逻辑操作数占用和操作数0一样的“位置”(占用同一个寄存器)。这种方法的特点是可以将两个“逻辑”操作数关联到两个不同的C语言变量上:

asm("add %2, %0" : "=r"(c) : "0"(a), "r"(b));

对应于C程序语句c=a+b。

数字规则仅能用于输入操作数,且必须引用到输出操作数。拿上例来说,数字规则”0”位于输入规则段,且引用到输出操作数0,该数字规则自身占用操作数计数1。

这里要注意,通过同名C语言变量是无法保证两个操作数占用同一“位置”的。比如下面这样的写法是不行的:

(错误写法)asm(“add %2, %0”:”=r”(a):”r”(a), “r”(b));

4. 指定寄存器

有时候我们需要在指令中使用指定的寄存器;典型的栗子是系统调用,必须将系统调用码和参数放在指定寄存器中。为了达到这个目的,我们要在声明变量时使用扩展语法:

register int a asm(“%eax”) = 1;              // statement 1

register int b asm(“%ebx”) = 2;              // statement 2

asm("add %1, %0" : "+r"(a) : "r"(b));         // statement 3

注意只有在执行汇编指令时能确定a在eax中,b在ebx中,其他时候a和b的存放位置是不可知的。

另外,在这么用的时候要注意,防止statement 2在执行时覆盖了eax。例如statement 2改成下面这句:

register int b asm(“%ebx”) = func();

函数调用约定会将func()的返回值放在eax里,于是破坏了statement 1对a的赋值。这个时候可以先用一条语句将func返回值放在临时变量里:

int t = func();

register int a asm(“%eax”) = 1;              // statement 1

register int b asm(“%ebx”) = t;              // statement 2

asm("add %1, %0" : "+r"(a) : "r"(b));         // statement 3

5. 隐式改变寄存器

有的汇编指令会隐含修改一些不在指令操作数中的寄存器,为了让gcc知道这个情况,将隐式改变寄存器规则列在输入规则之后。下面是VAX机上的栗子:

asm volatile(“movc3 %0,%1,%2”

: /* no outputs */

:”g”(from),”g”(to),”g”(count)

:”r0”,”r1”,”r2”,”r3”,”r4”,”r5”);

(movc3是一条字符块移动(Move characters)指令)

这里要注意的是输入/输出规则中列出的寄存器不能和隐含改变规则中的寄存器有交叉。比如在上面的栗子里,规则“g”中就不能包含r0-r5。以指定寄存器语法声明的变量,所占用的寄存器也不能和隐含改变规则有交叉。这个应该好理解:隐含改变规则是告诉gcc有额外的寄存器需要照顾,自然不能和输入/输出寄存器有交集。

另外,如果你在指令里显式指定某个寄存器,那么这个寄存器也必须列在隐式改变规则之中(有点绕了哈)。上面我们说过gcc自身是不了解汇编指令的,所以你在指令中显式指定的寄存器,对gcc来说是隐式的,因此必须包含在隐式规则之中。另外,指令中的显式寄存器前需要一个额外的%,比如%%eax。

6. volatile

asm volatile通知gcc你的汇编指令有side effect,千万不要给优化没了,比如上面的栗子。

如果你的指令只是做些计算,那么不需要volatile,让gcc可以优化它;除此以外,无脑给每个asm加上volatile或者是个好办法。

基于gcc将C语言变量与指令操作数相关联

原文标题:byeyear: gcc内嵌汇编详解

文章出处:【微信号:LinuxDev,微信公众号:Linuxer】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

关于ARM的三种中断调试方法介绍

在整个流程中,用户首先需要建立工程并对工程做初步的配置,包括配置处理器和配置调试设备。编辑工程文件,....
发表于 07-10 16:01 10次 阅读
关于ARM的三种中断调试方法介绍

51单片机分外功用寄存器操作进程

51单片机特有的程序语法以及 Keil 软件的根柢操作进程,请咱们必定要有耐性。
发表于 07-10 10:52 16次 阅读
51单片机分外功用寄存器操作进程

使用C语言写出的九九乘法表

本文档的主要内容详细介绍的是使用C语言写出的九九乘法表资料合集免费下载。
发表于 07-10 08:00 8次 阅读
使用C语言写出的九九乘法表

Cortex-M3芯片简介

4. 寄存器位。通常是表示一个位段的数值,例如 bit[15:12] 表示位序号从15往下数到12,....
发表于 07-09 14:43 78次 阅读
Cortex-M3芯片简介

ADC支持采样频率受供电电压影响

STM32 ADC:STM32 12位ADC是逐次逼近型的模数转换器。它有多达19个多路复用通道,允....
发表于 07-09 14:32 30次 阅读
ADC支持采样频率受供电电压影响

C语言之结构体的声明与定义

我们刚刚申请了一个名叫Info的结构体类型,那么理论上我们可以像声明其他变量的操作一样,去声明我们的....
的头像 玩转单片机 发表于 07-09 09:06 121次 阅读
C语言之结构体的声明与定义

GAL16V8芯片的数据手册免费下载

GAL16V8 以最大 3.5ns的传输延迟时间,结合高性能的CMOS工艺与电可擦(E2 )悬浮栅工....
发表于 07-09 08:00 16次 阅读
GAL16V8芯片的数据手册免费下载

如何把C++的源程序改写成C语言

由于C++解释器比C语言解释器占用的存储空间要大500k左右。为了节省有限的存储空间,降低成本,同时也为了提高效率,将用C+...
发表于 07-08 20:51 132次 阅读
如何把C++的源程序改写成C语言

关于ARM流水线的资料和分析

流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法。目的是....
发表于 07-08 14:41 30次 阅读
关于ARM流水线的资料和分析

矩阵锁存器是如何工作的?

上面的有没有理解不重要,现在我们从简单的只能存1个bit电路开始,来了解一下内存的工作原理吧!
的头像 EDA365 发表于 07-08 11:30 327次 阅读
矩阵锁存器是如何工作的?

内存溢出的解决办法 ?

求解决方案?????
发表于 07-08 08:34 35次 阅读
内存溢出的解决办法 ?

贸泽开售Analog Devices低功耗AD4021和AD4022差分SAR ADC

贸泽电子供应的Analog Devices AD4021和AD4022为高精度、高速、低功耗的ADC....
发表于 07-07 14:54 168次 阅读
贸泽开售Analog Devices低功耗AD4021和AD4022差分SAR ADC

单片机C语言程序设计的详细资料

C语言目前己成为电子工程师进行单片机系统开发时的常用编程语言。用C语言来编写目标系统软件,会大大缩短....
发表于 07-07 14:48 50次 阅读
单片机C语言程序设计的详细资料

ADC时钟的工作原理详细介绍

ADC采样保持时间 = 1/{ (ADC时钟) / [2×(CONVRATEDIV +1 +SAMP....
发表于 07-07 08:00 27次 阅读
ADC时钟的工作原理详细介绍

GPIO做输出还能作外部中断输入吗?

我们这里要谈的是基于硬件模式的外部中断话题。当STM32的GPIO作为输出时,可能是通用GPIO输出....
的头像 ST MCU 信息交流 发表于 07-05 10:42 263次 阅读
GPIO做输出还能作外部中断输入吗?

4G内存和6G内存的手机成本差异是多少?

现在手机4G内存和6G内存的成本差异大概有多少呢?实际上,现在大多数的手机厂商还是使用LPDDR4X....
的头像 如意 发表于 07-05 10:38 257次 阅读
4G内存和6G内存的手机成本差异是多少?

工控机由哪几部分组成

那我们的工控机的是怎样做的呢?我们的工控机是由哪几方面组成的,下面给大家讲解一下:
发表于 07-05 09:30 105次 阅读
工控机由哪几部分组成

如何将PIC单片机AD转换数据打包

pic单片机作用宽泛,对于pic单片机,大家已不再像若干年前一样一无所知。随着对pic单片机的使用,....
的头像 Wildesbeast 发表于 07-04 11:13 755次 阅读
如何将PIC单片机AD转换数据打包

浅谈2020年六大主流编程语言

目前,计算机语言的总数总计达9000种。但是,其中只有50种编程语言是较为流行的。今天,小编就给大家....
的头像 如意 发表于 07-03 11:36 297次 阅读
浅谈2020年六大主流编程语言

FPGA的亚稳定性详细资料简介

本文叙述了FPGA的亚稳定性,叙述了它是如何发生的,是如何导致设计失效的。文中说明了如何计算亚稳定性....
发表于 07-03 08:00 40次 阅读
FPGA的亚稳定性详细资料简介

单片机教程之C语言的程序设计说明

C51是在标准C的基础上,根据单片机存储器硬件结构及内部资源,扩展了相应的数据类型和变量,而C51在....
发表于 07-02 17:45 54次 阅读
单片机教程之C语言的程序设计说明

c语言宏定义的使用方法

当宏作为常量使用时,C程序员习惯在名字中只使用大写字母。但是并没有如何将用于其他目的的宏大写的统一做....
发表于 07-02 15:04 95次 阅读
c语言宏定义的使用方法

C语言二级指针的用法与原理

提到指针,我们都知道指针是用来存储一个变量的地址。所以,当我们定义了一个指向指针的指针的时候(poi....
发表于 07-02 14:52 87次 阅读
C语言二级指针的用法与原理

Linux下对于函数调用的工作原理

高地址的一部分空间会分配给内核,称为内核空间,剩下的内存空间给用户使用,称为用户空间。
发表于 07-02 14:46 73次 阅读
Linux下对于函数调用的工作原理

CUDA 6中的统一内存模型

NVIDIA在CUDA 6中引入了统一内存模型 ( Unified Memory ),这是CUDA历....
的头像 Linuxer 发表于 07-02 14:08 114次 阅读
CUDA 6中的统一内存模型

雷克沙进军内存市场,内存市场大风暴

雷克沙的笔记本和台式机内存条采用了黑色的 PCB。参数方面,笔记本和台式机内存条都是 DDR4 26....
发表于 07-02 09:42 69次 阅读
雷克沙进军内存市场,内存市场大风暴

HW资料华-为硬件(硬件开发C语言PCB设计天线通信)

链接:https://pan.baidu.com/s/1HFxkb4O1jAZvCEccWVcd4w 提取码:stns 回复可见提取码,资源需求可加q1051514663 ...
发表于 07-01 18:20 85次 阅读
HW资料华-为硬件(硬件开发C语言PCB设计天线通信)

C语言和PHP,新手选择哪个比较好?

计科专业从事嵌入式开发多年,从现在的市场行情以及就业的机会上讲php的就业空间还是大于C语言,但并不....
的头像 如意 发表于 07-01 16:15 127次 阅读
C语言和PHP,新手选择哪个比较好?

Gigantic巨页与CMA的完全结合

用户可以在开机的时候通过hugetlb_cma bootargs来设置CMA的大小,如果是NUMA架....
的头像 Linuxer 发表于 07-01 14:46 136次 阅读
Gigantic巨页与CMA的完全结合

Python的发展趋势,未来可期

首先,当前Python作为一门流行程度比较高的全场景编程语言,在IT互联网行业和一部分传统行业已经有....
的头像 如意 发表于 07-01 10:19 223次 阅读
Python的发展趋势,未来可期

怎么样才能在Keil C51环境下实现64位浮点库的设计

为解决Keil C51环境下无法进行64位双精度计算的问题,采用分部存储和分部计算的方法,设计了在K....
发表于 07-01 08:00 18次 阅读
怎么样才能在Keil C51环境下实现64位浮点库的设计

怎么样才能使用Keil C51开发大型嵌入式程序

 结合在8051系列单片机平台上的实际开发应用的经验,介绍用 Keil C在8051单片机上进行大型....
发表于 07-01 08:00 18次 阅读
怎么样才能使用Keil C51开发大型嵌入式程序

详谈选择排序算法的定义和过程

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数....
的头像 如意 发表于 06-30 17:06 90次 阅读
详谈选择排序算法的定义和过程

三菱FX系列PLC教程:FX系列的方向开关指令

三菱FX系列PLC还有多种规格的数据存取单元,可用来修改定时器、计数器的设定值和数据寄存器的数据,也....
的头像 Renesas视频 发表于 06-30 12:40 342次 观看
三菱FX系列PLC教程:FX系列的方向开关指令

在2D和3D用户界面上进行Fluffy Spider演示

MIPS架构20多年前由斯坦福大学开发,是一种简洁、优化、具有高度扩展性的RISC架构。它的基本特点....
的头像 Imagination视频 发表于 06-30 12:04 504次 观看
在2D和3D用户界面上进行Fluffy Spider演示

C语言模拟实现memmove函数

memmove用于从src拷贝count个字节到dest,如果目标区域和源区域有重叠的话,memmo....
的头像 如意 发表于 06-29 17:53 99次 阅读
C语言模拟实现memmove函数

C语言模拟实现memcpy函数

memcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起....
的头像 如意 发表于 06-29 17:29 187次 阅读
C语言模拟实现memcpy函数

ISD4002语音录放电路的设计C语言程序免费下载

  本文档的主要内容详细介绍的是ISD4002语音录放电路的设计C语言程序免费下载。
发表于 06-29 17:20 15次 阅读
ISD4002语音录放电路的设计C语言程序免费下载

简易LCD示波器设计的C语言程序免费下载

本文档的与内容详细介绍的是简易LCD示波器设计的C语言程序免费下载。
发表于 06-29 17:20 32次 阅读
简易LCD示波器设计的C语言程序免费下载

液晶GPS定位信息显示器的设计C语言程序免费下载

本文档的主要内容详细介绍的是液晶GPS定位信息显示器的设计C语言程序免费下载。
发表于 06-29 17:20 36次 阅读
液晶GPS定位信息显示器的设计C语言程序免费下载

超声波测距器设计的C语言程序免费下载

本文档的主要内容详细介绍的是超声波测距器设计的C语言程序免费下载。
发表于 06-29 17:20 32次 阅读
超声波测距器设计的C语言程序免费下载

远程电话控制器设计的C语言程序免费下载

本文档的主要内容详细介绍的是远程电话控制器设计的C语言程序免费下载。
发表于 06-29 17:20 36次 阅读
远程电话控制器设计的C语言程序免费下载

C语言模拟实现strcmp函数

C语言模拟实现strcmp函数
的头像 如意 发表于 06-29 16:51 208次 阅读
C语言模拟实现strcmp函数

C语言模拟实现strstr函数

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数....
的头像 如意 发表于 06-29 16:36 358次 阅读
C语言模拟实现strstr函数

C语言模拟实现strcat函数

C语言模拟实现strcat函数
的头像 如意 发表于 06-29 16:18 171次 阅读
C语言模拟实现strcat函数

C语言模拟实现strcpy

strcpy是一种C语言的标准库函数,strcpy把从src地址开始且含有’\0’结束符的字符串复制....
的头像 如意 发表于 06-29 15:54 143次 阅读
C语言模拟实现strcpy

C语言模拟实现strlen的步骤

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是....
的头像 如意 发表于 06-29 15:48 158次 阅读
C语言模拟实现strlen的步骤

图文详解:数组和指针的传参

数组传参时,会退化为指针,所以我们先来看看什么是退化!
的头像 如意 发表于 06-29 15:34 141次 阅读
图文详解:数组和指针的传参

详谈C语言和C++的区别和联系

在学习了C语言和C++之后,这两者之间的区别我们需要仔细的捋一捋!
的头像 如意 发表于 06-29 14:56 102次 阅读
详谈C语言和C++的区别和联系

单片机程序开发的语言怎么选择

单片机程序的开发可以使用的两种语言,分别是C语言和汇编语言。这里要指出的一件事是,这不是嵌入式单片机....
的头像 电子魔法师 发表于 06-29 11:22 324次 阅读
单片机程序开发的语言怎么选择

Python基础教程第三版PDF电子书免费下载

《Python基础教程 第3版》包括Python程序设计的方方面面:首先,从Python的安装开始,....
发表于 06-29 08:00 105次 阅读
Python基础教程第三版PDF电子书免费下载

3D数学基础图形与游戏开发PDF电子书免费下载

 本书主要研究隐藏在3D几何世界背后的数学问题。3D数学是一门与计算几何相关的学科,计算几何则是研究....
发表于 06-29 08:00 66次 阅读
3D数学基础图形与游戏开发PDF电子书免费下载

大学生如何学习FPGA初学者怎么学FPGA

无论是从自身的发展,还是从FPGA所拥有的巨大市场来讲,学习FPGA都是一个不错的选择,对大家来说FPGA技术可能还是新...
发表于 06-23 15:12 288次 阅读
大学生如何学习FPGA初学者怎么学FPGA

win7电脑怎么清理电脑内存

1.鼠标右键单击任务栏空白处-选择启动任务管理器。 2.进入页面-点击性能-可以看到当前内存使用情况。 3.切换至进程选项栏-...
发表于 06-19 16:30 90次 阅读
win7电脑怎么清理电脑内存

MODE寄存器中没有关于SYNCE、SYNCSEL这两个bit的描述?

各位侠客们好,有个小小的疑问,手册spruh22c(April 2012–Revised February 2013)中描述的C28核DMA模块的MODE寄存...
发表于 06-19 14:10 84次 阅读
MODE寄存器中没有关于SYNCE、SYNCSEL这两个bit的描述?

有没有直接用sdio方式驱动sd卡的资料分享一下

  用sdio方式驱动sd卡,直接操作寄存器,谁有的能否发一份参考一下。。。。。。...
发表于 06-18 04:35 51次 阅读
有没有直接用sdio方式驱动sd卡的资料分享一下

请问是用库写程序好,还是操作寄存器好

请问是用库写程序好,还是操作寄存器好?    如果有库的话是怎么添加的啊?一直不理解啊...
发表于 06-18 04:35 39次 阅读
请问是用库写程序好,还是操作寄存器好

ATmega128 PWM怎么产生方波

      板子是ATmega128  PWM 产生方波   用的语言为GCC   具体实现...
发表于 06-18 03:35 39次 阅读
ATmega128 PWM怎么产生方波

读回XC4VSX55​​,但当我回读块内存互连的内容时,我得到的帧数据与下载到FPGA的帧日期不同怎么回事

嗨 我正在读回XC4VSX55​​,但当我回读块内存互连的内容时,我得到的帧数据与下载到FPGA的帧日期不同,并且指定了不...
发表于 06-17 14:29 76次 阅读
读回XC4VSX55​​,但当我回读块内存互连的内容时,我得到的帧数据与下载到FPGA的帧日期不同怎么回事

SMV512K32-SP 16MB 防辐射 SRAM

SMV512K32是一款高性能异步CMOS SRAM,由32位524,288个字组成。可在两种模式:主控或受控间进行引脚选择。主设件为用户提供了定义的自主EDAC擦除选项。从器件选择采用按要求擦除特性,此特性可由一个主器件启动。根据用户需要,可提供3个读周期和4个写周期(描述如下)。 特性 20ns读取,13.8ns写入(最大存取时间) 与商用 512K x 32 SRAM器件功能兼容 内置EDAC(错误侦测和校正)以减轻软错误 用于自主校正的内置引擎 CMOS兼容输入和输出电平,3态双向数据总线 3.3±0.3VI /O,1.8±0.15V内核 辐射性能放射耐受性是一个基于最初器件标准的典型值。辐射数据和批量验收测试可用 - 细节请与厂家联系。 设计使用基底工程和抗辐射(HBD)与硅空间技术公司(SST)许可协议下的< sup> TM 技术和存储器设计。 TID抗扰度&gt; 3e5rad(Si) SER&lt; 5e-17翻转/位 - 天使用(CRPLE96来计算用于与地同步轨道,太阳安静期的SER。 LET = 110 MeV (T = 398K) 采用76引线陶瓷方形扁平封装 可提供工程评估(/EM)样品这些部件只用于工程评估。它们的加工工艺为非兼容流程(例如,无预烧过程等),...
发表于 01-08 17:47 196次 阅读
SMV512K32-SP 16MB 防辐射 SRAM

SN74HCT273A 具有清零功能的八路 D 类触发器

与其它产品相比 D 类触发器   Technology Family VCC (Min) (V) VCC (Max) (V) Rating Operating temperature range (C)   SN74HCT273A HCT     2     6     Catalog     -40 to 85    
发表于 01-08 17:46 154次 阅读
SN74HCT273A 具有清零功能的八路 D 类触发器

SN74HC273A 具有清零功能的八路 D 类触发器

与其它产品相比 D 类触发器   Technology Family VCC (Min) (V) VCC (Max) (V) Bits (#) Rating Operating temperature range (C)   SN74HC273A HC     2     6     8     Catalog     -40 to 85    
发表于 01-08 17:46 212次 阅读
SN74HC273A 具有清零功能的八路 D 类触发器

SN74ABT16373A 具有三态输出的 16 位透明 D 类锁存器

'ABT16373A是16位透明D型锁存器,具有3态输出,专为驱动高电容或相对低阻抗负载而设计。它们特别适用于实现缓冲寄存器,I /O端口,双向总线驱动器和工作寄存器。 这些器件可用作两个8位锁存器或一个16位锁存器。当锁存使能(LE)输入为高电平时,Q输出跟随数据(D)输入。当LE变为低电平时,Q输出锁存在D输入端设置的电平。 缓冲输出使能(OE \)输入可用于将8个输出置于正常逻辑状态(高或低逻辑电平)或高阻态。在高阻抗状态下,输出既不会加载也不会显着驱动总线。高阻抗状态和增加的驱动提供了驱动总线的能力,而无需接口或上拉组件。 OE \不会影响锁存器的内部操作。当输出处于高阻态时,可以保留旧数据或输入新数据。 当VCC介于0和2.1 V之间时,器件在上电或断电期间处于高阻态。但是,为了确保2.1 V以上的高阻态,OE \应通过上拉电阻连接到VCC;电阻的最小值由驱动器的电流吸收能力决定。 SN54ABT16373A的特点是可在-55°C至125°C的整个军用温度范围内工作。 SN74ABT16373A的特点是在-40°C至85°C的温度范围内工作。 ...
发表于 10-11 15:07 100次 阅读
SN74ABT16373A 具有三态输出的 16 位透明 D 类锁存器

SN74ALVCH16820 具有双路输出和三态输出的 3.3V 10 位触发器

这个10位触发器设计用于1.65 V至3.6 VVCC操作。 < p> SN74ALVCH16820的触发器是边沿触发的D型触发器。在时钟(CLK)输入的正跳变时,器件在Q输出端提供真实数据。 缓冲输出使能(OE)输入可用于将10个输出放入正常逻辑状态(高或低逻辑电平)或高阻态。在高阻抗状态下,输出既不会加载也不会显着驱动总线。高阻抗状态和增加的驱动提供了驱动总线的能力,而无需接口或上拉组件。 OE \输入不会影响触发器的内部操作。当输出处于高阻态时,可以保留旧数据或输入新数据。 为确保上电或断电期间的高阻态,OE \应连接到VCC通过上拉电阻;电阻的最小值由驱动器的电流吸收能力决定。 提供有源总线保持电路,用于将未使用或未驱动的输入保持在有效的逻辑电平。不建议在上拉电路中使用上拉或下拉电阻。 特性 德州仪器广播公司的成员?系列 数据输入端的总线保持消除了对外部上拉/下拉电阻的需求 每个JESD的闩锁性能超过250 mA 17 ESD保护超过JESD 22 2000-V人体模型(...
发表于 10-11 14:49 30次 阅读
SN74ALVCH16820 具有双路输出和三态输出的 3.3V 10 位触发器

SN74ABT16374A 具有三态输出的 16 位边沿 D 类触发器

'ABT16374A是16位边沿触发D型触发器,具有3态输出,专为驱动高电容或相对低阻抗而设计负载。它们特别适用于实现缓冲寄存器,I /O端口,双向总线驱动器和工作寄存器。 这些器件可用作两个8位触发器或一个16位触发器。在时钟(CLK)输入的正跳变时,触发器的Q输出采用在数据(D)输入处设置的逻辑电平。 缓冲输出使能(OE \)输入可用于将8个输出置于正常逻辑状态(高或低逻辑电平)或高阻态。在高阻抗状态下,输出既不会加载也不会显着驱动总线。高阻抗状态和增加的驱动提供了驱动总线的能力,而无需接口或上拉组件。 OE \不会影响触发器的内部操作。当输出处于高阻态时,可以保留旧数据或输入新数据。 当VCC介于0和2.1 V之间时,器件在上电或断电期间处于高阻态。但是,为了确保2.1 V以上的高阻态,OE \应通过上拉电阻连接到VCC;电阻的最小值由驱动器的电流吸收能力决定。 SN54ABT16374A的特点是可在-55°C至125°C的整个军用温度范围内工作。 SN74ABT16374A的特点是在-40°C至85°C的温度范围内工作。 特性 ...
发表于 10-11 11:46 48次 阅读
SN74ABT16374A 具有三态输出的 16 位边沿 D 类触发器

SN74AHCT16374 具有三态输出的 16 位边沿 D 类触发器

'AHCT16374器件是16位边沿触发D型触发器,具有3态输出,专为驱动高电容或相对较低的电容而设计阻抗负载。它们特别适用于实现缓冲寄存器,I /O端口,双向总线驱动器和工作寄存器。 这些器件可用作两个8位触发器或一个16位触发器。在时钟(CLK)输入的正跳变时,触发器的Q输出取数据(D)输入的逻辑电平。 缓冲输出使能(OE \)输入可用于将8个输出置于正常逻辑状态(高或低逻辑电平)或高阻态。在高阻抗状态下,输出既不会加载也不会显着驱动总线。高阻抗状态和增加的驱动提供了驱动总线的能力,而无需接口或上拉组件。 为了确保上电或断电期间的高阻态,OE \应通过上拉电阻连接到VCC;电阻的最小值由驱动器的电流吸收能力决定。 OE \不会影响触发器的内部操作。当输出处于高阻态时,可以保留旧数据或输入新数据。 SN54AHCT16374的特点是可在-55°C至125°C的整个军用温度范围内工作。 SN74AHCT16374的工作温度范围为-40°C至85°C。   特性 德州仪器WidebusTM家庭成员 EPICTM(...
发表于 10-11 11:32 87次 阅读
SN74AHCT16374 具有三态输出的 16 位边沿 D 类触发器

CY74FCT162374T 具有三态输出的 16 位边沿触发 D 类触发器

CY74FCT16374T和CY74FCT162374T是16位D型寄存器,设计用作高速,低功耗总线应用中的缓冲寄存器。通过连接输出使能(OE)和时钟(CLK)输入,这些器件可用作两个独立的8位寄存器或单个16位寄存器。流通式引脚排列和小型收缩包装有助于简化电路板布局。 使用Ioff为部分断电应用完全指定此设备。 Ioff电路禁用输出,防止在断电时损坏通过器件的电流回流。 CY74FCT16374T非常适合驱动高电容负载和低阻抗背板。 CY74FCT162374T具有24 mA平衡输出驱动器,输出端带有限流电阻。这减少了对外部终端电阻的需求,并提供最小的下冲和减少的接地反弹。 CY74FCT162374T非常适合驱动传输线。 特性 Ioff支持部分省电模式操作 边沿速率控制电路用于显着改善的噪声特性 典型的输出偏斜< 250 ps ESD&gt; 2000V TSSOP(19.6密耳间距)和SSOP(25密耳间距)封装 工业温度范围-40°C至+ 85°C VCC= 5V±10% CY74FCT16374T特点: ...
发表于 10-11 11:28 128次 阅读
CY74FCT162374T 具有三态输出的 16 位边沿触发 D 类触发器

SN74ALVCH16260 具有三态输出的 12 位至 24 位多路复用 D 类锁存器

这个12位至24位多路复用D型锁存器设计用于1.65 V至3.6 VVCC操作。 SN74ALVCH16260用于必须将两个独立数据路径复用到单个数据路径或从单个数据路径解复用的应用中。典型应用包括在微处理器或总线接口应用中复用和/或解复用地址和数据信息。该器件在存储器交错应用中也很有用。 三个12位I /O端口(A1-A12,1B1-1B12和2B1-2B12)可用于地址和/或数据传输。输出使能(OE1B \,OE2B \和OEA \)输入控制总线收发器功能。 OE1B \和OE2B \控制信号还允许在A到B方向上进行存储体控制。 可以使用内部存储锁存器存储地址和/或数据信息。锁存使能(LE1B,LE2B,LEA1B和LEA2B)输入用于控制数据存储。当锁存使能输入为高电平时,锁存器是透明的。当锁存使能输入变为低电平时,输入端的数据被锁存并保持锁存,直到锁存使能输入返回高电平为止。 确保上电或断电期间的高阻态,OE \应通过上拉电阻连接到VCC;电阻的最小值由驱动器的电流吸收能力决定。 提供有源总线保持电路,用于保持有效逻辑电平的未使用或浮动数据输入。 < p> SN74ALVCH16260的工...
发表于 10-11 11:08 37次 阅读
SN74ALVCH16260 具有三态输出的 12 位至 24 位多路复用 D 类锁存器

SN74ALVCH16374 具有三态输出的 16 位边沿 D 类触发器

这个16位边沿触发D型触发器设计用于1.65 V至3.6 VVCC操作。 SN74ALVCH16374特别适用于实现缓冲寄存器,I /O端口,双向总线驱动器和工作寄存器。它可以用作两个8位触发器或一个16位触发器。在时钟(CLK)输入的正跳变时,触发器的Q输出取数据(D)输入的逻辑电平。 OE \可用于将8个输出置于正常逻辑状态(高或低逻辑电平)或高阻态。在高阻抗状态下,输出既不会加载也不会显着驱动总线。高阻抗状态和增加的驱动提供了驱动总线的能力,而无需接口或上拉组件。 OE \不会影响触发器的内部操作。当输出处于高阻态时,可以保留旧数据或输入新数据。 为确保上电或断电期间的高阻态,OE \应连接到VCC通过上拉电阻;电阻的最小值由驱动器的电流吸收能力决定。 有源总线保持电路将未使用或未驱动的输入保持在有效的逻辑状态。不建议在上拉电路中使用上拉或下拉电阻。 特性 德州仪器广播公司的成员?系列 工作电压范围为1.65至3.6 V 最大tpd为4.2 ns,3.3 V ±24-mA输出驱动在3.3 V 数据输入...
发表于 10-11 11:06 53次 阅读
SN74ALVCH16374 具有三态输出的 16 位边沿 D 类触发器

SN74ALVCH16373 具有三态输出的 16 位透明 D 类锁存器

这个16位透明D型锁存器设计用于1.65 V至3.6 VVCC操作。 SN74ALVCH16373特别适用于实现缓冲寄存器,I /O端口,双向总线驱动器和工作寄存器。该器件可用作两个8位锁存器或一个16位锁存器。当锁存使能(LE)输入为高电平时,Q输出跟随数据(D)输入。当LE变为低电平时,Q输出锁存在D输入设置的电平。 缓冲输出使能(OE)输入可用于将8个输出置于正常状态逻辑状态(高或低逻辑电平)或高阻态。在高阻抗状态下,输出既不会加载也不会显着驱动总线。高阻抗状态和增加的驱动提供了驱动总线的能力,而无需接口或上拉组件。 OE \不会影响锁存器的内部操作。当输出处于高阻态时,可以保留旧数据或输入新数据。 为确保上电或断电期间的高阻态,OE \应连接到VCC通过上拉电阻;电阻的最小值由驱动器的电流吸收能力决定。 有源总线保持电路将未使用或未驱动的输入保持在有效的逻辑状态。不建议在上拉电路中使用上拉或下拉电阻。 特性 德州仪器广播公司的成员?系列 工作电压范围为1.65 V至3.6 V 最大tpd3.6 ns,3.3 V ...
发表于 10-11 11:02 80次 阅读
SN74ALVCH16373 具有三态输出的 16 位透明 D 类锁存器

SN74LVCH16373A 具有三态输出的 16 位透明 D 类锁存器

这个16位透明D型锁存器设计用于1.65 V至3.6 VVCC操作。 特性 德州仪器宽带总线系列成员 典型VOLP(输出接地反弹) &lt; 0.8 V,VCC= 3.3 V,TA= 25°C 典型VOHV(输出V < sub> OH Undershoot) &gt; 2 V在VCC= 3.3 V,TA= 25°C Ioff支持实时插入,部分 - 电源关闭模式和后驱动保护 支持混合模式信号操作(具有3.3VVCC的5V输入和输出电压) < li>数据输入端的总线保持消除了对外部上拉或下拉电阻的需求 每个JESD的闩锁性能超过250 mA 17 ESD保护超过JESD 22 < ul> 2000-V人体模型(A114-A) 200-V机型(A115-A) 参数 与其它产品相比 D 类锁存器   Technology Family VCC (Min) (V) VCC (Max) (V) Bits (#) ...
发表于 10-11 11:00 167次 阅读
SN74LVCH16373A 具有三态输出的 16 位透明 D 类锁存器

SN74ABTH16260 具有三态输出的 12 位至 24 位多路复用 D 类锁存器

SN54ABT16260和SN74ABTH16260是12位至24位多路复用D型锁存器,用于必须复用两条独立数据路径的应用中,或者从单个数据路径中解复用。典型应用包括在微处理器或总线接口应用中复用和/或解复用地址和数据信息。该器件在存储器交错应用中也很有用。 三个12位I /O端口(A1-A12,1B1-1B12和2B1-2B12)可用于地址和/或数据传输。输出使能(OE1B \,OE2B \和OEA \)输入控制总线收发器功能。 OE1B \和OE2B \控制信号还允许A-to-B方向的存储体控制。 可以使用内部存储锁存器存储地址和/或数据信息。锁存使能(LE1B,LE2B,LEA1B和LEA2B)输入用于控制数据存储。当锁存使能输入为高电平时,锁存器是透明的。当锁存使能输入变为低电平时,输入端的数据被锁存并保持锁存状态,直到锁存使能输入返回高电平为止。 当VCC介于0和2.1 V之间时,器件在上电或断电期间处于高阻态。但是,为了确保2.1 V以上的高阻态,OE \应通过上拉电阻连接到VCC;电阻的最小值由驱动器的电流吸收能力决定。 提供有源总线保持电路,用于保持有效逻辑电平的未使用或浮动数据输入。 ...
发表于 10-11 10:51 56次 阅读
SN74ABTH16260 具有三态输出的 12 位至 24 位多路复用 D 类锁存器

SN74ABT162823A 具有三态输出的 18 位总线接口触发器

这些18位总线接口触发器具有3态输出,专为驱动高电容或相对低阻抗负载而设计。它们特别适用于实现更宽的缓冲寄存器,I /O端口,带奇偶校验的双向总线驱动器和工作寄存器。 ?? ABT162823A器件可用作两个9位触发器或一个18位触发器。当时钟使能(CLKEN)\输入为低电平时,D型触发器在时钟的低到高转换时输入数据。将CLKEN \置为高电平会禁用时钟缓冲器,从而锁存输出。将清零(CLR)\输入设为低电平会使Q输出变为低电平而与时钟无关。 缓冲输出使能(OE)\输入将9个输出置于正常逻辑状态(高电平)或低电平)或高阻抗状态。在高阻抗状态下,输出既不会加载也不会显着驱动总线。高阻抗状态和增加的驱动器提供了驱动总线线路的能力,无需接口或上拉组件。 OE \不会影响触发器的内部操作。当输出处于高阻态时,可以保留旧数据或输入新数据。 输出设计为源电流或吸收电流高达12 mA,包括等效的25- 串联电阻,用于减少过冲和下冲。 这些器件完全符合热插拔规定使用Ioff和上电3状态的应用程序。 Ioff电路禁用输出,防止在断电时损坏通过器件的电流回流。上电和断电期间,上电三态电路将输出置...
发表于 10-11 10:48 48次 阅读
SN74ABT162823A 具有三态输出的 18 位总线接口触发器

SN74ABTH162260 具有串联阻尼电阻和三态输出的 12 位到 24 位多路复用 D 类锁存器

'ABTH162260是12位至24位多路复用D型锁存器,用于两个独立数据路径必须复用或复用的应用中。 ,单一数据路径。典型应用包括在微处理器或总线接口应用中复用和/或解复用地址和数据信息。这些器件在存储器交错应用中也很有用。 三个12位I /O端口(A1-A12,1B1-1B12和2B1-2B12)可用于地址和/或数据传输。输出使能(OE1B \,OE2B \和OEA \)输入控制总线收发器功能。 OE1B \和OE2B \控制信号还允许A-to-B方向的存储体控制。 可以使用内部存储锁存器存储地址和/或数据信息。锁存使能(LE1B,LE2B,LEA1B和LEA2B)输入用于控制数据存储。当锁存使能输入为高电平时,锁存器是透明的。当锁存使能输入变为低电平时,输入端的数据被锁存并保持锁存状态,直到锁存使能输入返回高电平为止。 B端口输出设计为吸收高达12 mA的电流,包括等效的25系列电阻,以减少过冲和下冲。 提供有源总线保持电路,用于保持有效逻辑电平的未使用或浮动数据输入。 当VCC介于0和2.1 V之间时,器件在上电或断电期间处于高阻态。但是,为了确保2.1 V以上的高阻态,OE \应通过...
发表于 10-11 10:45 58次 阅读
SN74ABTH162260 具有串联阻尼电阻和三态输出的 12 位到 24 位多路复用 D 类锁存器

SN74ABT162841 具有三态输出的 20 位总线接口 D 类锁存器

这些20位透明D型锁存器具有同相三态输出,专为驱动高电容或相对低阻抗负载而设计。它们特别适用于实现缓冲寄存器,I /O端口,双向总线驱动器和工作寄存器。 ?? ABT162841器件可用作两个10位锁存器或一个20位锁存器。锁存使能(1LE或2LE)输入为高电平时,相应的10位锁存器的Q输出跟随数据(D)输入。当LE变为低电平时,Q输出锁存在D输入设置的电平。 缓冲输出使能(10E或2OE)输入可用于放置输出。相应的10位锁存器处于正常逻辑状态(高或低逻辑电平)或高阻态。在高阻抗状态下,输出既不会加载也不会显着驱动总线。 输出设计为吸收高达12 mA的电流,包括等效的25- 用于减少过冲和下冲的串联电阻。 这些器件完全适用于使用I的热插入应用关闭并启动3状态。 Ioff电路禁用输出,防止在断电时损坏通过器件的电流回流。上电和断电期间,上电三态电路将输出置于高阻态,从而防止驱动器冲突。 为确保上电或断电期间的高阻态, OE \应通过上拉电阻连接到VCC;电阻的最小值由驱动器的电流吸收能力决定。 OE \不影响锁存器的内部操作。当输出处于高阻态时,可以保留旧数据...
发表于 10-11 10:43 104次 阅读
SN74ABT162841 具有三态输出的 20 位总线接口 D 类锁存器

SN74ALVTH16821 具有三态输出的 2.5V/3.3V 20 位总线接口触发器

'ALVTH16821器件是20位总线接口触发器,具有3态输出,设计用于2.5 V或3.3 VVCC操作,但能够为5 V系统环境提供TTL接口。 这些器件可用作两个10位触发器或一个20位触发器。 20位触发器是边沿触发的D型触发器。在时钟(CLK)的正跳变时,触发器存储在D输入端设置的逻辑电平。 缓冲输出使能(OE \)输入可用于将10个输出置于正常逻辑状态(高电平或低电平)或高阻态。在高阻抗状态下,输出既不会加载也不会显着驱动总线。高阻抗状态和增加的驱动提供了驱动总线的能力,而无需接口或上拉组件。 OE \不会影响触发器的内部操作。当输出处于高阻态时,可以保留旧数据或输入新数据。 当VCC介于0和1.2 V之间时,器件在上电或断电期间处于高阻态。但是,为了确保1.2 V以上的高阻态,OE \应通过上拉电阻连接到VCC;电阻的最小值由驱动器的电流吸收能力决定。 提供有源总线保持电路,用于保持有效逻辑电平的未使用或浮动数据输入。 SN54ALVTH16821的特点是可在-55°C至125°C的整个军用温度范围内工作。 SN74ALVTH16821的工作温度范围为-40&de...
发表于 10-11 10:35 32次 阅读
SN74ALVTH16821 具有三态输出的 2.5V/3.3V 20 位总线接口触发器

SN74ALVTH16374 具有三态输出的 2.5V/3.3V 16 位边沿 D 类触发器

'ALVTH16374器件是16位边沿触发D型触发器,具有3态输出,设计用于2.5V或3.3VV < sub> CC 操作,但能够为5 V系统环境提供TTL接口。这些器件特别适用于实现缓冲寄存器,I /O端口,双向总线驱动器和工作寄存器。 这些器件可用作两个8位触发器或一个16位翻转器。翻牌。在时钟(CLK)的正跳变时,触发器存储在数据(D)输入处设置的逻辑电平。 缓冲输出使能(OE)输入可用于将8个输出置于正常逻辑状态(高或低逻辑电平)或高阻态。在高阻抗状态下,输出既不会加载也不会显着驱动总线。高阻抗状态和增加的驱动提供了驱动总线的能力,而无需接口或上拉组件。 OE不影响触发器的内部操作。当输出处于高阻态时,可以保留旧数据或输入新数据。 提供有源总线保持电路,用于保持有效逻辑电平的未使用或浮动数据输入。 /p> 当VCC介于0和1.2 V之间时,器件在上电或断电期间处于高阻态。但是,为了确保1.2 V以上的高阻态,OE应通过上拉电阻连接到VCC;电阻的最小值由驱动器的电流吸收能力决定。 SN54ALVTH16374的特点是在-55°C至125°C的整个军用温度...
发表于 10-11 10:31 39次 阅读
SN74ALVTH16374 具有三态输出的 2.5V/3.3V 16 位边沿 D 类触发器

SN74ABTH16823 具有三态输出的 18 位总线接口触发器

这些18位触发器具有3态输出,专为驱动高电容或相对低阻抗负载而设计。它们特别适用于实现更宽的缓冲寄存器,I /O端口,带奇偶校验的双向总线驱动器和工作寄存器。 'ABTH16823可用作两个9位触发器或一个18位触发器。当时钟使能(CLKEN \)输入为低电平时,D型触发器在时钟的低到高转换时输入数据。将CLKEN \置为高电平会禁用时钟缓冲器,锁存输出。将清零(CLR \)输入置为低电平会使Q输出变为低电平,与时钟无关。 缓冲输出使能(OE \)输入可用于将9个输出置于正常逻辑状态(高或低逻辑电平)或高阻态。在高阻抗状态下,输出既不会加载也不会显着驱动总线。高阻抗状态和增加的驱动提供了驱动总线的能力,而无需接口或上拉组件。 OE \不会影响触发器的内部操作。当输出处于高阻态时,可以保留旧数据或输入新数据。 当VCC介于0和2.1 V之间时,器件在上电或断电期间处于高阻态。但是,为了确保2.1 V以上的高阻态,OE \应通过上拉电阻连接到VCC;电阻的最小值由驱动器的电流吸收能力决定。 提供有源总线保持电路,用于保持有效逻辑电平的未使用或浮动数据输入。 ...
发表于 10-10 17:15 89次 阅读
SN74ABTH16823 具有三态输出的 18 位总线接口触发器

SN74AHCT16373 具有三态输出的 16 位透明 D 类锁存器

SNxAHCT16373器件是16位透明D型锁存器,具有3态输出,专为驱动高电容或相对低阻抗负载而设计。它们特别适用于实现缓冲寄存器,I /O端口,双向总线驱动器和工作寄存器。 特性 德州仪器Widebus™系列的成员 EPIC™(增强型高性能注入CMOS)工艺 输入兼容TTL电压 分布式VCC和GND引脚最大限度地提高高速 开关噪声 流通式架构优化PCB布局 每个JESD的闩锁性能超过250 mA 17 ESD保护每个MIL-STD超过2000 V- 883, 方法3015;使用机器型号超过200 V(C = 200 pF,R = 0) 封装选项包括: 塑料收缩小外形(DL)封装 < li>薄收缩小外形(DGG)封装 薄超小外形(DGV)封装 80-mil精细间距陶瓷扁平(WD)封装 25密耳的中心间距 参数 与其它产品相比 D 类锁存器   ...
发表于 10-10 16:23 87次 阅读
SN74AHCT16373 具有三态输出的 16 位透明 D 类锁存器