精华内容
下载资源
问答
  • 原语

    2020-07-19 15:20:07
    第一次看到“原语”这种提法还是在学习操作系统的时候,而且要么不碰到,一碰就是一双,“PV操作”这对原语就是我最先接触到的操作系统原语。当年 Alan Turing 在定义图灵机六个基本操作的时候也用了 primitive 这个...

    参考链接:https://www.cnblogs.com/hualalasummer/p/3704225.html
    什么是“原语”
    第一次看到“原语”这种提法还是在学习操作系统的时候,而且要么不碰到,一碰就是一双,“PV操作”这对原语就是我最先接触到的操作系统原语。当年 Alan Turing 在定义图灵机六个基本操作的时候也用了 primitive 这个词。当时觉得“原语”这个词很陌生,于是上网查了一下,大部分的解释都包含了“原子操作”的概念,事实上知道原语英文(primitives)的朋友应该知道它和“atomic”并没有多大关联,这说明“原语”和“原子”都姓“原”仅仅是一个巧合,尽管所有的“原语”看上去都是原子操作,但是它的定义绝对不仅限于此。

    后来我在一个外国的论坛上找到了答案,具体的说法我已经忘了,简单地讲就是“石头、剪刀、布”这三样东西,除了“石头”是原语,而“剪刀”和“布头”不算,为什么呢?因为剪刀和布头都是人工合成的,而石头是浑然天成的。因此“原语”这个单词的定义还是要从它的英文原词 primitive 出发,也就是“原始”的意思。

    我们知道物质的最小组成单位绝非原子,比原子小的是质子,比质子小的还有夸克。那么为什么我们看到一把剪刀以后很容易想到它的各个组成部分(比如锋利的部分用铁制成,而握的地方用塑料),而看到一块石头以后,脑子里还是只有一块石头,而不是各种矿物质的名称呢?原因是在人类形成最早语言的过程中还不知道什么是矿物质,众所周知人类的视力其实是很差的,只能看到光谱上面很小的一段可见光,也不能像显微镜一样看见的东西,直到道尔顿发现原子,人类科学才算走上了正轨。

    计算机是一门人造科学,因此真正意义上的“原语”是不存在的。操作系统层面上的“原语”(比如 write 之类的系统调用)对程序员来讲的确是不可分割的最小单位,但是这写系统调用本身还是用好几句汇编语句组成的(对于 Linux 来说是 C 语言)。可能有人要说到了机器代码这一级就不能再分了,但事实上一条机器指令也是由好几个组合逻辑信号构成的。同样的道理,控制信号也不过是无数电子在器件内部漂移的结果。

    因此定义“原语”的前提是观察者所处的位置。一旦规定了观察者的位置和观察的角度,比如就在操作系统的这层上,read,wirte,wait这些个系统调用自然就是最“原始”的词汇,这也是为什么“原语”会在操作系统中频繁出现的缘故。

    参考链接:https://baike.baidu.com/item/%E5%8E%9F%E8%AF%AD/3794081?fr=aladdin
    计算机进程的控制通常由原语完成。所谓原语,一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。在操作系统中,某些被进程调用的操作,如队列操作、对信号量的操作、检查启动外设操作等,一旦开始执行,就不能被中断,否则就会出现操作错误,造成系统混乱。所以,这些操作都要用原语来实现 原语是操作系统核心(不是由进程,而是由一组程序模块组成)的一个组成部分,并且常驻内存,通常在管态下执行。原语一旦开始执行,就要连续执行完,不允许中断。

    展开全文
  • 原语-源码

    2021-02-04 01:03:56
    原语
  • xilinx原语

    2016-07-31 13:52:25
    xilinx原语的一些资料
  • Xinlinx原语

    2018-04-09 13:41:45
    xinlinx系列的FPGA,使用时,一些原语的介绍,可以用于vivado综合,约束等方面
  • P原语与V原语

    千次阅读 2019-01-06 09:36:01
    P原语:P是荷兰语Proberen(测试)的首字母。为阻塞原语,负责把当前进程由运行状态转换为阻塞状态,直到另外一个进程唤醒它。 操作为:申请一个空闲资源(把信号量减1),若成功,则退出;若失败,则该进程被阻塞...

    P原语:P是荷兰语Proberen(测试)的首字母。为阻塞原语,负责把当前进程由运行状态转换为阻塞状态,直到另外一个进程唤醒它。

    操作为:申请一个空闲资源(把信号量减1),若成功,则退出;若失败,则该进程被阻塞;

     

     

    V原语:V是荷兰语Verhogen(增加)的首字母。为唤醒原语,负责把一个被阻塞的进程唤醒,它有一个参数表,存放着等待被唤醒的进程信息。

    操作为:释放一个被占用的资源(把信号量加1),如果发现有被阻塞的进程,则选择一个唤醒之。

    展开全文
  • Xilinx原语

    2020-03-05 23:27:45
    原语,即primitive。不同的厂商,原语不同;同一家的FPGA,不同型号的芯片,可以也不一样;原语类似最底层的描述方法。使用原语的好处,可以直接例化使用,不用定制IP;即可通过复制原语的语句,然后例化IP,就可...
    	原语,即primitive。不同的厂商,原语不同;同一家的FPGA,不同型号的芯片,可以也不一样;原语类似最底层的描述方法。使用原语的好处,可以直接例化使用,不用定制IP;即可通过复制原语的语句,然后例化IP,就可使用;Xilinx是通过直接修改原语中的参数再例化IP来使用;Xilinx公司的原语分为10类,包括:计算组件,IO端口组件,寄存器/锁存器,时钟组件,处理器组件,移位寄存器,配置和检测组件,RAM/ROM组件,Slice/CLB组件,G-tranceiver。下图所示为UG799中对原语的分类列表。
    

    在这里插入图片描述
    项目中实际用到了串并转换,时钟BUFF,因此选择部分重点讲解,具体可以参考UG799和对于手册,如IO可以参考UG471。

    1.串并转换 OSERDESE2

    	OSERDES 7系列设备专用于并行串行转换器,具有特定的时钟和逻辑资源,旨在促进高速资源同步接口的实现。每个OSERDES模块都包含用于数据和三态控制的专用序列化器。可以采用单数据率(SDR)和双数据率(DDR)模式进行配置。数据串行化可以达到8:1(如果使用OSERDESWidthExpansion,则可以达到10:1或14:1)。3-state序列器可以达到4:1。
    	具体实现10bit转串行数据:
    

    在这里插入图片描述
    在Language Templates ----->Verilog里面可以搜索对应原语;
    在这里插入图片描述

    //  OSERDESE2  : In order to incorporate this function into the design,
    //   Verilog   : the following instance declaration needs to be placed
    //  instance   : in the body of the design code.  The instance name
    // declaration : (OSERDESE2_inst) and/or the port declarations within the
    //    code     : parenthesis may be changed to properly reference and
    //             : connect this function to the design.  All inputs
    //             : and outputs must be connected.
    
    //  <-----Cut code below this line---->
    
       // OSERDESE2: Output SERial/DESerializer with bitslip
       //            Artix-7
       // Xilinx HDL Language Template, version 2017.4
    
       wire  [1:0]   shift_data;
    
       OSERDESE2 #(
          .DATA_RATE_OQ("DDR"),   // DDR, SDR    The DATA_RATE_OQ attribute defnes whetherdataisprocessedassingle datarate(SDR)ordoubledatarate (DDR).其中SDR是只上升沿采样或下降沿采样,DDR只上升沿和下降沿同时采样;
          .DATA_RATE_TQ("DDR"),   // DDR, BUF, SDR------------同理控制三态的
          .DATA_WIDTH  (4    ),         // Parallel data width (2-8,10,14)
          .INIT_OQ(1'b0),         // Initial value of OQ output (1'b0,1'b1),给0 给1其实都可以
          .INIT_TQ(1'b0),         // Initial value of TQ output (1'b0,1'b1)
          .SERDES_MODE("MASTER"), // MASTER, SLAVE
          .SRVAL_OQ(1'b0),        // OQ output value when SR is used (1'b0,1'b1)  ---SR:复位
          .SRVAL_TQ(1'b0),        // TQ output value when SR is used (1'b0,1'b1)
          .TBYTE_CTL("FALSE"),    // Enable tristate byte operation (FALSE, TRUE)
          .TBYTE_SRC("FALSE"),    // Tristate byte source (FALSE, TRUE)
          .TRISTATE_WIDTH(1)      // 3-state converter width (1,4),该数据必须查手册,不同位宽和采样模式对应数据不一样
       )
       OSERDESE2_inst1 (
          .OFB(      ),             // 1-bit output: Feedback path for data,返回的数据,不使用时可以留空
          .OQ(OQ),               // 1-bit output: Data path output,输出的串行数据
          // SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each),输出类型未使用时可以空着
          .SHIFTOUT1(        ),
          .SHIFTOUT2(        ),
          .TBYTEOUT(         ),   // 1-bit output: Byte group tristate,三态的可空着
          .TFB(TFB),             // 1-bit output: 3-state control
          .TQ(TQ),               // 1-bit output: 3-state control
          .CLK(sys_clk_5x),             // 1-bit input: High speed clock
          .CLKDIV(sys_clk_1x),       // 1-bit input: Divided clock
          // D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each)
          .D1(Data_in[0]),
          .D2(Data_in[1]),
          .D3(Data_in[2]),
          .D4(Data_in[3]),
          .D5(Data_in[4]),
          .D6(Data_in[5]),
          .D7(Data_in[6]),
          .D8(Data_in[7]),
          .OCE(1'b1),             // 1-bit input: Output data clock enable,输出时钟使能,始终让他为1即可
          .RST(sys_rst),             // 1-bit input: Reset
          // SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each)
          .SHIFTIN1(shift_data[0]),
          .SHIFTIN2(shift_data[1]),
          // T1 - T4: 1-bit (each) input: Parallel 3-state inputs,三态输入端,没有用到统一填0
          .T1(0),
          .T2(0),
          .T3(0),
          .T4(0),
          .TBYTEIN(0),     // 1-bit input: Byte group tristate
          .TCE(0)              // 1-bit input: 3-state clock enable
       );
    
       // End of OSERDESE2_inst instantiation				
    

    下图描述TRISTATE_WIDTH的选取:
    在这里插入图片描述
    与10bit并转串代码段中还应添加OSERDESE2_inst2,与此类似稍作修改即可,不再赘述。

    2. 单端信号转差分信号:OBUFDS

      如果直接用下面的逻辑生成则会出现p端逻辑和n端逻辑差一个反相器,路径延时不一致,指示差分结果出错;
    
    assign diff_data_p = data_ser;
    assign diff_data_n = ~data_ser;
    

    同样可以使用原语:OBUFDS

       OBUFDS #(
          .IOSTANDARD("DEFAULT"), // Specify the output I/O standard
          .SLEW("SLOW")           // Specify the output slew rate
       ) OBUFDS_inst (
          .O(O),     // Diff_p output (connect directly to top-level port)
          .OB(OB),   // Diff_n output (connect directly to top-level port)
          .I(I)      // Buffer input 
       );
    

    3. IBUFG和IBUFGDS(IO)

       IBUFG即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUF元,否则在布局布线时会报错。 IBUFG支持AGP、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI、LVDS、LVPECL、LVTTL、PCI、PCIX和 SSTL等多种格式的IO标准。
       IBUFGDS是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲。IBUFG支持BLVDS、LDT、LVDSEXT、LVDS、LVPECL和ULVDS等多种格式的IO标准。
    

    举例说明:差分时钟芯片输入的100MHz时钟,作为FPGA的全局时钟。

    IBUFGDS #(
                .DIFF_TERM    ("TRUE" ),
                .IBUF_LOW_PWR ("FALSE")
            ) u_ibufg_clk_100 (
                .I  (FP_CLK_100M_P),
                .IB (FP_CLK_100M_N),
                .O  (clk_100m     )
            );
    
    展开全文
  • 原语详解

    千次阅读 2018-10-31 12:59:11
    原语(原子语言,不可分割,不可中断)是操作系统或计算机网络用语范畴。是由若干条指令组成的,用于完成一定功能的一个过程。primitive or atomic action 是由若干个机器指令构成的完成某种特定功能的一段程序,...

    原语(原子语言,不可分割,不可中断)是操作系统或计算机网络用语范畴。是由若干条指令组成的,用于完成一定功能的一个过程。primitive or atomic action 是由若干个机器指令构成的完成某种特定功能的一段程序,具有不可分割性。即原语的执行必须是连续的,在执行过程中不允许被中断。

    分类

    计算机网络中也有“原语”一词,它与操作系统的“原语”概念不同。服务原语是指协议中的下层协议通过接口为上层协议提供某种服务而发送的原语操作。

    原语分为四类:请求(Req)型原语,用于高层向低层请求某种业务;证实(Cfm)型原语,用于提供业务的层证实某个动作已经完成;指示(Ind)型原语,用于提供业务的层向高层报告一个与特定业务相关的动作;响应(Res)型原语,用于应答,表示来自高层的指示原语已收到。

    组成及功能

    原语通常由若干条指令组成,用来实现某个特定的操作。通过一段不可分割的或不可中断的程序实现其功能。原语是操作系统的核心,它不是由进程而是由一组程序模块所组成,是操作系统的一个组成部分,它必须在管态(一种机器状态,管态下执行的程序可以执行特权和非特权两类指令,通常把它定义为操作系统的状态)下执行,并且常驻内存,而个别系统有一部分不在管态下运行。原语和广义指令都可以被进程所调用,两者的差别在于原语有不可中断性,它是通过在执行过程中关闭中断实现的,且一般由系统进程调用。许多广义指令的功能都可用目态(一种机器状态,通常把它作为用户程序执行时的状态)下运行的系统进程完成,而不一定要在管态下完成,例如文件的建立、打开、关闭、删除等广义指令,都是借助中断进入管态程序,然后转交给相应的进程,最终由进程实现其功能。引进原语的主要目的是为了实现进程的通信和控制。

    PV原语2种形式

    PV原语通过操作信号量来处理进程间的同步与互斥的问题。其核心就是一段不可分割不可中断的程序。 信号量的概念1965年由著名的荷兰计算机科学家Dijkstra提出,其基本思路是用一种新的变量类型(semaphore)来记录当前可用资源的数量

    semaphore有两种实现方式:

    1) semaphore的取值必须大于或等于0。0表示当前已没有空闲资源,而正数表示当前空闲资源的数量

    2) semaphore的取值可正可负,负数的绝对值表示正在等待进入临界区的进程个数。

    信号量是由操作系统来维护的,用户进程只能通过初始化和两个标准原语(P、V原语)来访问。初始化可指定一个非负整数,即空闲资源总数。

    P原语

    P是荷兰语Passeren(通过)的首字母。为阻塞原语,负责把当前进程由运行状态转换为阻塞状态,直到另外一个进程唤醒它。操作为:申请一个空闲资源(把信号量减1),若成功,则退出;若失败,则该进程被阻塞;

    V原语

    V是荷兰语Verhogen(增加)的首字母。为唤醒原语,负责把一个被阻塞的进程唤醒,它有一个参数表,存放着等待被唤醒的进程信息。操作为:释放一个被占用的资源(把信号量加1),如果发现有被阻塞的进程,则选择一个唤醒之。

    P原语操作的动作是:

    (1)sem减1;

    (2)若sem减1后仍大于或等于零,则P原语返回,该进程继续执行;

    (3)若sem减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。

    V原语操作的动作是:

    (1)sem加1;

    (2)若相加结果大于零,则V原语停止执行,该进程返回调用处,继续执行;

    (3)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。

    PV操作对于每一个进程来说,都只能进行一次,而且必须成对使用。在PV原语执行期间不允许有中断的发生。

    具体PV原语对信号量的操作可以分为三种情况:

    1) 把信号量视为一个加锁标志位,实现对一个共享变量的互斥访问。

    实现过程:

    P(mutex); // mutex的初始值为1 访问该共享数据; V(mutex); 非临界区;

    2) 把信号量视为是某种类型的共享资源的剩余个数,实现对一类共享资源的访问。

    实现过程:

    P(resource); // resource的初始值为该资源的个数N 使用该资源; V(resource); 非临界区;

    3) 把信号量作为进程间的同步工具

    实现过程:

    临界区C1; P(S); V(S); 临界区C2;

    展开全文
  • JavaScript 原语

    2020-01-03 13:52:44
    在JavaScript,一个原语(primitive–原语值,原语数据类型)是一个数据,不是一个对象并且没有方法。有七种原语数据类型: string number bigint boolean null undefined symbol 一般,原语表现为语言实现的最...
  • 隐私保护原语:用于实现隐私保护网络的原语和协议
  • Xilinx原语详解

    2019-05-07 23:06:17
    该资料讲解了最全的Xilinx原语,包括Spartan6和7系列的,包括实例化代码和详细的解释。
  • 服务原语

    2018-04-05 14:30:05
    服务”在形式上是用一组原语来描述的,这些原语供用户实体访问该服务或向用户实体报某事件的发生。服务原语可以划分为如表1 - 3所示的4类。服务原语原 语 意 义请求(R e q u e s t) 用户实体要求服务做某项工作...
  • 进程与原语

    2021-03-13 20:33:24
    进程与原语的区别 原语是操作系统级别的来控制进程的一个指令(统称不是就只有一条指令)/程序段 进程就可以看为一个原语(类比) 原语没有数据,进程有数据,这条原语的指令,pcb块(描述信息和控制信息) 进程和...
  • 011 Verilog原语

    2020-10-08 17:09:38
    Verilog原语,UDP,User Defined Primitive,用户自定义原语
  • p原语和v原语

    千次阅读 2014-08-13 17:05:31
    P原语:P是荷兰语Proberen(测试)的首字母。为阻塞原语,负责把当前进程由运行状态转换为阻塞状态,直到另外一个进程唤醒它。 操作为:申请一个空闲资源(把信号量减1),若成功,则退出;若失败,则该进程被...
  • Xilinx器件原语

    2019-12-10 16:58:54
    Xilinx器件原语
  • ecos系统同步原语

    2018-06-06 10:14:38
    ecos系统同步原语, 包含互斥,信号量, 信箱, 事件, Spinlock ,条件变量。
  • virtex6原语

    2014-02-19 12:30:00
    virtex6各种原语,便于FPGA的编程
  • FPGA原语简介

    2020-12-08 22:48:46
    1 Xilinx FPGA原语简介 原语(Primitive),是Xilinx针对其器件特征开发的一系列常用模块的名字,用户可以将其看成Xilinx公司为用户提供的库函数,是芯片中的基本元件,代表FPGA中实际拥有的硬件逻辑单元,如LUT,D...
  • OSERDESE2原语.docx

    2019-08-08 09:58:38
    OSERDESE2原语实际项目使用经验分析,不懂的可以学习下。
  • 原语 原语操作 原子操作

    千次阅读 2012-01-17 17:07:36
    原语 内核或微核提供核外调用的过程或函数称为原语(primitive)。 原语是一段用机器指令编写的完成特定功能的程序,在执行过程中不允许中断。 BaiDu 解析 Introduction 操作系统用语范畴。 primitive ...
  • 转载自ventry ... 服务”在形式上是用一组原语来描述的,这些原语供用户实体访问该服务或向用户实体报某事件的发生。服务原语可以划分为如表1 - 3所示的4类。服务原语原 语 意 义请求(R e...
  • 进程控制原语

    千次阅读 2018-08-31 10:40:15
    进程控制原语包括:进程的建立、进程的撤销、进程的等待和进程的唤醒。 操作系统执行和监督进程控制操作,往往通过执行各种原语操作实现。计算机控制器的机器指令是微操作构成的,原语是机器指令的延伸,是由若干条...
  • xilinx V6 原语代码

    2014-08-29 13:44:04
    xilinx V6系列原语程序 包含所有原语 直接复制代码到工程文件即可

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,364
精华内容 3,345
关键字:

原语