精华内容
下载资源
问答
  • 寄存器是中央处理器内的du组成部份。它跟CPU有关。寄zhi存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理...

    从范围来看,它们所指的范畴就不一样。
    寄存器是中央处理器内的组成部份。它跟CPU有关。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。
    存储器范围最大,它几乎涵盖了所有关于存储的范畴。你所说的寄存器,内存,都是存储器里面的一种。凡是有存储能力的硬件,都可以称之为存储器,这是自然,硬盘更加明显了,它归入外存储器行列,由此可见——。
    内存既专业名上的内存储器,它不是个什么神秘的东西,它也只是存储器中的沧海一粟,它包涵的范围也很大,一般分为只读存储器和随即存储器,以及最强悍的高速缓冲存储器(CACHE),只读存储器应用广泛,它通常是一块在硬件上集成的可读芯片,作用是识别与控制硬件,它的特点是只可读取,不能写入。随机存储器的特点是可读可写,断电后一切数据都消失,我们所说的内存条就是指它了。
    CACHE是在CPU中速度非常块,而容量却很小的一种存储器,它是计算机存储器中最强悍的存储器。由于技术限制,容量很难提升,一般都不过兆。

    来自百度,哈哈

    展开全文
  • 点击蓝字关注我们大家好,我L.L.,欢迎来到数字ic自修室。我们知道对于每个IC前端工程师来说,一个好的代码风格...RTL(Register Transfer Level),指的是寄存器传输级别的硬件描述,那么关于寄存器Register的硬件...
    6f589086b6af221aa7eddc5db640e99c.gif点击蓝字关注我们ac9acb71e3accb5dd4d73b7625eebdbb.gif大家好,我是L.L.,欢迎来到数字ic自修室。我们知道对于每个IC前端工程师来说,一个好的代码风格很重要,一方面便于保证自己书写时硬件逻辑脉络的清晰,另外一个更重要的原因是便于代码的阅读和维护。这篇文章想聊一下RTL里描述寄存器的两种不同代码风格。ac9acb71e3accb5dd4d73b7625eebdbb.gif

    RTL(Register Transfer Level),指的是寄存器传输级别的硬件描述,那么关于寄存器Register的硬件描述自然是我们写代码时候最日常的操作了。在verilog语言中,使用always语句块便能描述最基本的d寄存器。如果该寄存器的更新条件和更新值复杂一点,配合if-else也可以轻易完成。

    对于寄存器来说,分为控制寄存器和数据寄存器。一般而言数据寄存器不需要复位,bit数也较大。在描述的时候略为不同。

    1

    控制寄存器

    举一个简单的例子。一个用来表示数据有效的单bit valid信号,复位值为1’b0,在新数据到来的时刻条件A成立时需要被设置成1’b1,在数据清除B条件成立时要被清为1’b0,如果某时刻A和B同时成立,则数据依然有效。根据条件,很轻易地可以写出以下verilog寄存器描述:

    5617806397e655d8c97218a6ce21b782.png

    这么写肯定是没问题的。通过if-else的描述来保证AB同时有效时刻的优先级,功能描述也符合需求。但有个点,这么写综合出来的电路是什么样的,很难通过代码直观感受。很明显这应该综合出一个1bit的d寄存器,但它的d端,en端具体和A,B这些条件是什么连接关系呢?只看代码不好推测。我们来看另外一种代码风格描述同一个功能:

    b04d678d8e468c4aa9287eff0a851f83.png

    很明显,这种方式描述的d寄存器,每个pin所连接的逻辑都一目了然。

    2

    数据寄存器

    依旧举一个简单的例子。一个多bit的数据,A条件成立时被赋值成data_a,B条件成立时被赋值成data_b,C条件成立时被赋值成data_c,优先级A>B>C。依旧可以有两种不同的描述方式:

    第一种: 

    d976f4d0e9344d9302339a2384b1b6e1.png

    第二种:

    7b44dd0de705167c8797509fae214970.png

    以上两个例子中,前一种写法本质上是行为级的描述,用偏软件风格的描述,if-else更加直观容易理解,但综合实现结果取决于工具。而后一种写法本质上是门级的描述,逻辑看着不那么直观明了,但是确实门级电路最终实现的样子。一方面可以最大程度人为控制综合结果(比起行为级描述),另一方面便于寄存器批量替换。在蜂鸟E203开源RISCV项目中便使用了这种寄存器描述来实例化标准寄存器:

    97f26aeb74283f3a82c1f275f1e3592b.png

    如果使用行为级描述的if-else来描述寄存器,那么无法实现这样的寄存器模块化。

    此外,对于数据寄存器的d端,如果使用if-else,没有特别对综合工具下约束,只能生成优先级选择逻辑,而使用门级描述,可以轻易选择使用优先级选择逻辑或者是并行选择逻辑,以此来优化时序(当然前提是A,B,C条件互斥)。

    0b5b3abc985c26a5907bc01b21dd4be3.png

    这篇文章举的这些例子,提到了寄存器的两种不同代码风格:行为级描述和门级描述。其实也适用于组合逻辑。组合逻辑可以使用always@(*)的方式进行行为级描述,也可以直接使用assign加上与或非来进行门级描述。两种不同的风格,因人而异,只要保证个人全篇代码风格的统一就可以,并没有孰优孰劣。相比于行为级,门级描述能让硬件工程师更加清晰地认识到自己所写的代码最后将是什么样的电路,在做ppa考量的时候更好进行一些粗略估算和分析。而行为级的抽象是硬件描述语言不断进步的一种体现,让写代码的人能更加注重算法的实现,至于硬件的实现则更多地交给EDA工具。

    但是不管是哪种代码风格,都要尽量做到“眼前是代码,心中是电路”。毕竟目前我们搬的是硬件的砖,自称攻城狮而不是程序猿..

    今天就到这里,欢迎大家继续关注我们后续文章。

    本文作者 | L.L.

    ● 欢迎转发,转载请注明出处,原创文章可后台联系我们开白。

    彩 蛋

    ▼ 扫码备注入群,数字IC自修室欢迎你!

    2dfdad8ce26ed4636e1c6c18e94486a0.png

    772243fcb5b11a2965172f97ed4d702a.png

    我就知道你“在看”883a906709f066e47a1e41dd6df5f312.gif
    展开全文
  • 寄存器数据类型 Verilog中规定,凡是在程序块中被赋值的变量,都必须是寄存器类型的。...如果该程序块描述的组合逻辑,该寄存器变量对应为硬件逻辑;如果该程序块描述的不完全组合逻辑,那么该寄存器变量...

    寄存器数据类型

    Verilog中规定,凡是在程序块中被赋值的变量,都必须是寄存器类型的。(程序块:例如always块)

    这里未免还是会让人产生疑惑?寄存器数据类型的变量最后一定会被综合成寄存器吗?

    对应于实际的数字电路中,如果该程序块描述的是时序逻辑,则该寄存器变量对应为寄存器;如果该程序块描述的是组合逻辑,该寄存器变量对应为硬件逻辑;如果该程序块描述的是不完全组合逻辑,那么该寄存器变量也可以对应为锁存器。由此可见,寄存器类型的变量不一定会综合为寄存器。

    线网数据类型

    Verilog中规定,模块的input和inout端口必须是线网类型;连续赋值语句的被赋值对象必须是线网类型。对应于实际的数字电路,线网类型实际上就对应着硬件的连线,起到连接作用。

    线网数据类型包括wire和tri等,wire最常见,不必多说,很多情况下直接声明为wire即可。

    至于tri其实和wire在用法上是一模一样的,不过有时候,我们需要定义一些会被三态门驱动的硬件连线,用tri来命名会让代码更具有可读性,让人一看就知道这根连线上会出现Z状态,仅此而已!

    至于其他的一些古怪的类型,用到了在总结吧,现在写了用不到也是废了!笔记内容来自于《FPGA之道》

    展开全文
  • 前言前面我写过一些文章介绍了Java高级编程的一些基础知识,在这些内容中有一个非常重要的基础点就是线程执行问题。...而从操作系统角度来说,它有一个个运行于硬件上的代码程序构成,它又其它更高级应用程序...
    01f36da83ded0ccd75b05752db939170.png

    前言

    前面我写过一些文章介绍了Java高级编程的一些基础知识,在这些内容中有一个非常重要的基础点就是线程执行问题。如何在编程中使用线程的概念,以及线程之间的通信与关联问题。这里我不再去重复概念的描述,只想说一下我个人对它的理解。

    进程与线程

    熟悉操作系统的人都知道,我们计算机上每一个应用的运行都是以进程的方式来完成的。而从操作系统角度来说,它是有一个个运行于硬件上的代码程序构成,它又是其它更高级应用程序运行的基础。一般应用程序运行的进程在某种程度上可以看做是操作系统的线程。

    线程是我们代码运行的一个路径,一段程序可能有多条路径存在,但是它都属于一个进程,即可执行的程序。

    从硬件的角度上说,每一个程序的运行都是基于CPU的运算和内部存储来支持的,所以从这个角度上我们可以把进程理解为计算机为该程序运行分配的地址空间以及该程序执行时的逻辑控制线程。

    当然我们知道绝大部分程序都不是简单到只需要一个控制线程就能够完成的,而能够让程序得以运行的基础只有一个核心就是CPU,而CPU和它的寄存器为我们提供了能够自由开创独立执行空间和控制器的基础空间,我们通常编写的应用程序可能有多个控制线程来管理执行内容。也就是说会涉及到它们对对多个操作数据的地址空间的管理。

    仔细观察我们就知道,我们写程序的每一段代码其实都是一个函数,它需要执行的入口,它接收输入,它提供执行的内容,最后返回结果。

    如此,我们就需要有一个独立的线程来对这一过程进行控制,知道入口在哪里,知道输入参数,然后执行的函数体,最后将返回结果写入到哪里。

    同样当我们进入一段代码时,代码本身可能也需要有自己的独立空间来存储只属于它本身的参数,代码和返回值。如此这就需要我们开启另一个线程和对应的控制器,我们CPU内部结构里是通过数据寄存器来实现的。

    我们可以这样理解一段代码或者程序,它必须有一个入口,和一个出口或者结束点。每个点都会定义一定长度的内存空间作为其标识。

    让CPU知道它可以从哪个地址空间里获取输入参数,执行哪些地址里的运算表达式,然后将结果释放到那个地址的返回值空间里。

    b553be3209e1e8921a12aa5b28a5195b.png

    多线程程序结构

    如果我们应用程序有过个线程同时存在,并且他们的执行彼此之间需要通信,我们都知道一般语言的内存操作模型都是将使用公共的地址来存取共用的数据然后每个执行的线程都会有自己独立的栈空间来完成运算,并且运算过程中它们会将公共的数据拷贝到自己的栈空间内部进行操作,操作完成后会在退出自己的运行栈时区覆盖主内存中的公共数据。

    线程可以简单的看做是一段执行态的代码。它一般通过栈操作来进行,也就是说CPU通过后进先出一步步将要执行的代码读入栈中,并将一些需要实例化的对象在堆中存储然后将其指针压入栈中,以此来控制CPU可以操作的数据地址,因为栈是后进先出模式的,可以有效的实现过程语句的顺序执行。

    Java有一个成熟的内存计算模型,JMM,它详细的定义了线程执行的过程和机制以及对于共享数据争用时的处理规范。可以看一下我之前写的相关文章。

    一段代码进入可执行状态就是被读入寄存器等待CPU指令的执行,这就是我们常见的Runnable规范定义。要求必须有一个独立的入口函数,没有返回值基本固定定义好函数名为run(),就如同我们每个进程级可执行程序必须有一个静态的main()方法一样。

    所以我们在定义线程的抽象模型时,也设定了它可调用的方法名字,run(),我们要做编程过程中开始一个新的线程,必须让运行的代码是包含一个入口函数run()方法实现的。它会告诉操作系统需要创建一个独立的执行栈,将所需的内容都按照执行顺序压入其中,然后从上到下开始逐步执行。

    当然当我们需要一个线程执行完毕后返回一个结果时,我们需要在其开始的时候压入一个结果地址在栈底,代码执行结束后将结果拷贝到指定的地址空间里。完成返回结果值操作。

    Java中Callable接口定义了一个返回值,其类型可采用泛型规定,在编译时编译器会根据运算情况推测出结果类型并替换泛型符号。

    总得来说我们可以将我们编写的一个完整程序的过程理解为一条从某一个源点开始流淌的大河,中间它会不断的分叉,产生支流,甚至回旋往复,但最后都会从一个入海口流入大海。

    源头和入海口都只有一个的情况下,我们可以忽略这条大河流淌过程中有多支流和回旋甚至池湖,这就如同我们编写的每个函数一样有入口,有出口,中间就是表现业务逻辑的内容。我们每条干流或者支流都是一个线程,或者每个线程内部还会有多个独立线程构成,它们之间可能有千丝万缕的联系,但是每个线程的执行都是独立的,都是CPU来负责。

    1442c5204290623918e94d9ef1b24c1a.png

    Java程序结构

    对于Java编程来说,同样的所有可执行的程序进程都是有一个固定模式的静态入口函数方法:

    void main(String[] args) 

    该方法实际上是会调用Java虚拟机来创建一个应用程序的内存运行的内存空间和主函数计数器,至于我们在该应用程序内部做如何处理,可以是简单的顺序执行的语句代码罗列,也可以是定义方法指针的调用,将具体的逻辑处理内容定义为方法实现体。

    这里要注意的是我们在方法体内定义的任何变量都会是主函数空间内的局部变量,但是当我们想并行处理某个变量时,就需要在该主线程空间内部定义一个新的子线程,每个子线程也会有一个属于自己的堆栈空间,它会将需要操作的主线程空间的变量拷贝到自己的线程空间内部进行操作处理,在离开子线程或者其他特定要求下会将局部变量里对应的拷贝数据覆盖回主线程数据。

    如果我们的应用程序以独立子线程的形式在一个多核处理上运行,就有可能出现多个并行的线程同时去更新主线程中的变量问题,这就是数据竞态问题。前面我们说过通常我们会采用为线程操作排队的方式来处理,即Synchronized同步关键字,或者在主线程中对于共享的变量声明为volitile易挥发性,也就是它要求每次一个线程对其副本的修改都要立刻更新到主线程共享变量中,而不是等到子线程结束或者具体要求时才更新。

    我们在通常的编程中有一个原则就是尽量的避免使用共享的变量,为了能够获得更高的安全性和更好的执行效率,我们推荐尽量多使用不可更改的变量,即尽可能的多用final关键字声明变量。如此可以保证我们的应用程序将数据争用的问题降到最低。

    64926ac40bf641defcf21525ee6225fc.png

    线程的使用

    Java中对于线程的描述使用了Thread类,它定义了一个应用程序能够对系统线程可以做到的所有操作接口描述。

    对于一个线程来说,它在CPU上执行时绝对是对立唯一的,因为每次都会在自己的堆栈中执行。

    但是我们实际的编程时,特别是现代计算机发展到了多核CPU时代,为了尽可能的利用多核的优势,提高程序效率,会充分利用多核并行执行,如此就要求我们尽量的将可以并行的内容定义成一个可执行的代码段。

    通常我们用一个Thread类来管理执行,这个代码段设计要求跟其它部分关联度比较低,不会设计大量的资源争用问题,如此可以从主线程中繁殖出多个能够独立执行的子线程来,在没有资源争用的前提下来使用不同的CPU内核并行处理。

    我们可以手动的通过实现继承Thread类或者实现Runnable或者Callable等将可以并行执行的代码包裹起来,采用线程调度和排序等规则来管理器并行执行和对共享数据的访问。

    当然,Java平台已经提供了很多更加复杂的线程执行类或者接口,它们通常被称为线程池实现,允许我们方便的去定义线程并调动执行它们。

    在这里我不想一一介绍了,只是想说一定要理解它们之间的包含于被包含的关系,以及每个线程都有自己的独立堆栈空间作为自己的作用区域,凡是位于父线程空间的内容,都可以被子线程访问,这也是Java线程间通信最重要的一种方式。

    当然,还有另外一种就是事件通知模式,它是将每个线程的发生都定义成一个事件发送出来,由其它对该事件感兴趣的线程获取事件对象,并对事件进行处理,已达到线程间通信的目的。

    比如,在我们实际的应用程序开发过程中,我们可能会遇见很多比如需要大量彼此孤立有密集的计算和处理过程的处理,并且需要在最后需要将所有的处理结果进行合并处理。这种情况我们可以采用ForkJoinPool来完成。它是线程池实现的一种,是一个执行特殊任务的线程池,命名为ForkJoinTask。

    它提供了一个对接口Future的实现,使得我们可以对该线程处理的过程进行管理,可以调用其get()、cancel()和isDone()等方法来掌控线程执行。

    除此之外,这个类还提供了两个方法,它们为整个框架提供了名称:fork()和join()。

    我们可以调用fork()将启动新任务子线程并异步执行,而调用join()将等待任务子线程完成并检索其结果。

    借此,我们可以将一个给定的任务分解成多个较小的任务,派生每个任务,最后等待所有任务完成。

    这样做可以使得复杂问题的实现更加容易。在计算机科学中,这种方法也称为分治法。

    每当一个问题太复杂而不能一次解决时,它就被分解成多个更小、更容易解决的问题。

    cc530779e799f90e321dc79c96bd9e5a.png

    总结

    我们的编程其实就是对CPU的调度和内存空间的操作管理,而这些都是通过定义了一个抽象概念线程来描述的,整个Java语言的运行环境就是一个对操作系统管理的内存空间和CPU调度的一种使用,我们编写的所有Java程序都是运行在JRE环境中的,而JRE其实就是操作系统中一个进程,这个进程描述了一个空间,在这个空间内部,所有的Java代码被处理和执行,而庞大的代码为了完成某种逻辑的实现需要通过更小一级的相对独立的进程来完成,而该进程运行的环境是JRE提供的,我们的CPU每次执行的代码又是以线程为单位,有其独立的堆栈来管理的。

    要学好编程必须理解好CPU和内存空间操作层面的概念和关系,计算机内核其实就是一个空间和调度的算法实现,高级语言的编程就是在规定内存空间内对CPU调度操作。

    展开全文
  • 大家都知道我们可以使用C语言写一段程序来控制硬件工作,但你知道其工作原理吗?网友北极C语言在实际运行中,都以汇编指令的方式运行的,由编译器把C语言...硬件会把硬件上的各种寄存器(外行可以理解为访问硬件的...
  • verilog一门硬件描述语言,请把它和软件编程语言区分开; 写的代码不是逻辑,电路。 在遇到问题时,请从电路角度开始思考~ always 语块并行执行。简单想想: 它们Always哥几个一起同时去喂同一个女神...
  • 大家都知道我们可以使用C语言写一段程序来控制硬件工作,但你知道其工作原理吗?网友北极C语言在实际运行中,都以汇编指令的方式运行的,由编译器把C语言...硬件会把硬件上的各种寄存器(外行可以理解为访问硬件的...
  • 大家都知道我们可以使用C语言写一段程序来控制硬件工作,但你知道其工作原理吗?1c语言在实际运行中,都以汇编指令的方式运行的,由编译器...硬件会把硬件上的各种寄存器(外行可以理解为访问硬件的接口或者操作硬件...
  • 大家都知道我们可以使用C语言写一段程序来控制硬件工作,但你知道其工作原理吗?网友北极C语言在实际运行中,都以汇编指令的方式运行的,由编译器把C语言...硬件会把硬件上的各种寄存器(外行可以理解为访问硬件的...
  • 前言键盘可以说是我们最常使用的输入硬件设备了,但身为程序员的你,你知道「键盘敲入 A 字母时,操作系统期间发生了什么吗」?那要想知道这个发生的过程,我们得先了解了解「操作系统如何管理多种多样的的输入...
  • 读中断屏蔽寄存器 and al,0f7h out 21h,al ;写IMR,开放IRQ3中断 mov cx,10 ;记中断循环次数为10次 sti ;开中断 ll: jmp ll int3 proc ;中断服务程序 mov ax,data mov ds,ax mov dx,offset mess mov ah,...
  • 从传统嵌入式工程师的学习路径来看,大部分从熟悉硬件手册、配置寄存器开始学习,接着在边做项目边加深学习C语言,根据项目不同,会接触一些基础算法,比如控制上的pid、多轴插补,图像处理上的滤波、分割等等。...
  • 对于每天的工作就敲代码...java虚拟机当中有自己想象中的硬件的,例如,处理器、堆栈、寄存器等等,还具有一些相应的指令系统。一般来说企业会使用例如java之类的基于虚拟机的语言来构建比较复杂的应用程序,毕竟j...
  • 最后语言代码被编译成二进制,执行时仍然寄存器硬件什么执行的吧,既然没利用系统调用,alu这些东西怎么懂这些库函数要求的操作干嘛的啊?不是说系统调用硬件的接口吗?还有系统调用和驱动程序的关系...
  • IIC上的每个器件是否都要一个地址寄存器来确定自己的地址:很多器件都通过硬件来确定地址的。  有的在出厂时地址就设置好了,用户不可以更改,有的确定了几位,剩下几位由硬件确定(比如有三位由用户确定,就留有...
  • volatile 应用

    2018-12-28 11:10:40
    1)并行设备的硬件寄存器(如:状态寄存器) 2)一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3)多线程应用中被几个任务共享的变量 1)一个参数既可以const还可以volatile吗?...
  • (2)一个存放在8086计算机系统内存中的数据,它以DS作为段基址寄存器且设(DS)=1000H,段内偏移地址为2300H,会计算该数据的物理地址(同样:段基地址左移4位+段内偏移地址),指向这一物理地址的DS值和段内偏移...
  • 我使用软件 IIC读取LTC2943芯片中所测得电压数据,但低位一直为0,高位一直为0x7f,有人知道怎么回事吗? 或者谁用软件IIC驱动过LTC2943芯片的,发...另外,我能读取到LTC2943的状态寄存器和所测的电流寄存器值。
  • PCI.EXPRESS系统体系结构标准教材.pdf

    热门讨论 2013-02-17 16:21:16
    本书详细描述的pci express系统的体系结构,以及列举的大量示例,对于理解pci express内容并构思其用途有很大帮助,硬件设计人员和技术人员不可多得的参考书籍。 目录: 第一部分 总 览 第1章 体系...
  • 首先,因为我们需要了解 Java 虚拟机的并发,而物理硬件的并发和虚拟机的并发很相似,而且虚拟机的并发很多看着奇怪的设计都因为物理机的设计导致的。 什么并发?多个CPU同时执行。但请注意:只有CPU不行的,...
  • 1:设备的硬件寄存器 2:多线程任务中被共享的变量 3:中断服务子程序被访问到的非自动变量 1)一个参数既可以const还可以volatile吗?解释为什么。  2); 一个指针可以volatile 吗?解释为什么
  • 底层驱动基本上都用C编写的,驱动之所以能操作硬件因为能实现对寄存器的控制,而控制寄存器,必须通过位操作的运算才能实现 按位取反(~)和非(!)得区别 非(!):如果非0则结果为0,如果为0则结果1 置位和...
  • GPU架构 核心问题记录

    2020-04-04 20:26:12
    CPU 通过 MMIO 访问 GPU 的寄存器状态。 任何命令都由CPU发出。命令流(command stream)被提交到硬件单元,也就是GPU Channel。 CPU-GPU数据流 2、GPU也有缓存机制吗?有几层?它们的速度差异多少? ...
  • 前言 ​ JMM即java内存模型,JMM研究的就是多...它涵盖了缓存、写缓冲区、寄存器以及其他硬件和编译器优化。 ​ 先抛出两个问题: 你写的代码一定实际运行的代码吗? 代码的编写顺序,一定实际执行的顺序吗? 参考
  • 【问题描述】 小x最近在学习硬件知识。在很多硬件中,我们可能需要求取最大值,比如从...)……现在,只有减法器、位移寄存器和按位与可以用,多路选择器、编码器、译码器和解复用器都不能用的,这意味着你不能使用
  • 8086汇编

    2016-06-11 21:22:00
    8086Intel发布的第一款16位CPU, 其采用的x86架构日后成为Intel最成功的架构。 汇编语言使用助记符来代替机器码,汇编语言通常与机器...8084CPU所有的内部寄存器、内部及外部数据总线都16位宽,因此完全的...
  • DMA开发日志

    千次阅读 2005-06-24 11:09:00
    把总线上的记数结束信号T/C连接到总线上的一个中断输入信号,比如IRQ5,那么当发生中断的时候我怎么判断是不是我的中断,换句话说,我找不到我硬件里的中断控制寄存器!2应该一个异步过程调用,就是说用户线程先...
  • 1. 看了一下例程,居然没有FFT的例程,难道这个DSP28335不能做FFT吗?对了C2000系列有C2000 ware这个库的。方便很多,不过目前不确定...2. 硬件简介,其中DSP28335和TLV320AIC23B之间使用I2C接口进行寄存器配置,...

空空如也

空空如也

1 2 3
收藏数 55
精华内容 22
关键字:

寄存器是硬件吗