第一章 VHDL基本结构

2024-01-07 21:19
文章标签 基本 第一章 结构 vhdl

本文主要是介绍第一章 VHDL基本结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一章 VHDL基本

1.1  

1.2   构体

1.3   、子程序和 

1.4   和程序包

1.5   配置

              一个完整的VHDL程序,或者说设计实体,通常要求最低能VHDL合器所支持,并能作一个独立的设计单元,即元件的形式而存在的VHDL程序。在VHDL程序中,通常包含体(ENTITY)、构体(ARCHITECTURE)、配置(CONFIGURATION)、包集合(PACKAGE)和LIBRARY5个部分。其中体和构体两个基本构是必需的,他可以构成最简单VHDL程序。 

1.1  

         设计实VHDL设计的基本元,简单的可以是一个与复杂的可以是一个微理器或一个数字系,其构基本是一致的,都是明和构体两部分明是对这设计实体与外部行接口的描述,它定了设计单元的出接口信号或引脚,是设计实外的一个通信界面。构体用于描述此设计实体的逻辑结构和逻辑功能

构如下:

ENTITY  体名   IS

    [GENERIC属表);]

    [PORT(端口表);]

END  ENTITY  体名

例:

ENTITY  or2   IS

      PORTabIN  STD_LOGIC;

             C: OUT STD_LOGIC);

     END  ENTITY  or2

注意:“ENTITY  体名  IS”始,“END  ENTITY  体名;束。

       次化系统设计明是整个模或整个系出(I/O)接口;在一个器件设计中,明是一个芯片的出(I/O)。

1.1.1属参量GENERIC

属参量是组织中的可选项,放在端口明之前,其一般格式

GENERIC [CONSTANT] 名字表:[IN] 标识 [:= 表达式]…]

        属参量是一端口界面常数,常用来定端口的大小、体中子元件的数目及体的定特性等。它和常数不同,常数只能从设计实体的内部得到赋值且不能改,而属参量的可由设计实体的外部提供。因此设计者可以从外面通过类属参量的重新定而容易的改一个设计实体或一个元件的内部构和模。

例:

GENERIC trisetfallTIME:=1ns;

                    Addrwidth:INTEGER:=16);

PORT(a0, a1 : IN STD_LOGIC;

              Add_bus:OUT STD_LOGIC_VECTOR(addrwidth-1 DOWNTO 0);

属参量中参数trise上升沿度,tfall下降沿度,用于仿真模设计;定地址总线Addrwidth位,Addrwidth的改将使构体中所有相总线,由此使整个设计实体的硬件

1.1.2 端口PORT

         端口为设计实体和其外部境提供动态通信的通道,是基本设计单元与外部接口的描述,其功能相当符号的外部引脚。端口可以被赋值,也可以当做逻辑变量用在逻辑表达式中。

其一般写格式

PORT (端口名 :端口模式  数据型;

                端口名 :端口模式  数据型;

                    );

其中端口名是设计为实体的一个外通道所取的名字,通常英文字母加数字,名字的定有一定的例,clk 表示时钟D开头的端口名表示数据,A开头的端口名表示地址。端口模式是指些通道上的数据流的方式,如入或等。

端口模式有以下几种类型:

    1入(IN

      信号体,主要用于时钟输入、控制入(如loadresetenableclk)和向的数据入(如地址数据信号address)等。 

2出(OUT   

        出模式只允信号离开实体,常用于出、向数据出、被设计实生的控制其他体的信号等。注意:出模式不能用于被设计实体的内部反,因为输出端口在体内不能看做是可的。

     3.双向模式(INOUT

双向模式允信号双向传输(既可以体,也可以离开实体),双向模式端口允引入内部反

4冲(BUFFER 

   冲模式允信号出到体外部,但同也可以在体内部引用端口的信号。冲端口既能用于出也能用于反冲模式用于在体内部建立一个可出端口,例如数器出、数器的现态用来决定数器的次

   端口模式可用明,中方框代表一个设计实体或模

VHDL设计中,通常将入信号端口指定为输入模式出信号端口指定为输出模式,而双向数据通信信号,如算机PCI总线地址/数据总线DMA控制器数据总线双向的信号采用双向端口模式。从端口的名称、模式就能一目了然地指信号的用途、性、来源和去向

1.2 

构体也叫构造体,构体描述了基本设计单元(体)的构、行、元件及内部,也就是设计实体的功能,定了设计实体的数据流程,制定了体内部元件的构体其基本设计单元的入和系可用以下方式行描述即行描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和构描述逻辑元件接描述) 

        构体对实体功能的具体描述,因此它一定要跟在体的后面

构体一般由两大部分成:

1数据型、常数、信号、子程序和元件等因素明的部分

2.描述体的逻辑、以各不同的描述格表达的功能描述,包括各种顺和并行

构体的句格式

  ARCHITECTURE  构体名   OF   体名  IS

      [义语]

  BEGIN

      [功能描述]

  END   构体名

1.2.1  构体名

        构体名由设计者自行定OF后面的体名指明了该结构体所对应的是哪个体。有些设计实体有多个构体,构体的构体名不可相同,通常用dataflow(数据流)、behavior(行)、structural构)命名3个名称体3不同构体的描述方式,使得阅读VHDL言程序,能直接了解设计者采用的描述方式

1.2.2  构体信号定义语

       构体信号定义语句必放在关键词ARCHITECTUREBEGIN,用于对结构体内部将要使用的信号、常数、数据型、元件、函数和程加以明。需要注意的是明中定的信号是外部信号,而构体定的信号为该结构体的内部信号,它只能用于构体中。

       构体中的信号定和端口明一有信号名称和数据型定。因它是内部接用的信号,因此不需要方向 

例:构体的信号定义实例。

ARCHITECTURE  rtl  OF  muj  IS           --rtl:结构体名,muj实体名

    SIGNAL s1BIT                                     --结构体信号定义语句

    SIGNAL s2s3STD_LOGIC_VECTOR (0 TO 3);

   

BEGIN

    ….                                                           --功能描述语句

END rtl

1.2.3  构体功能描述

        构体功能描述句位于BEGINEND,具体地描述了构造体的行及其系。构体的功能描述句可以含有5不同型的并行,如所示。构内部可以使用并行句,也可以是

构体构造:

5功能描述句的基本成和功能分是:

1块语BLOCK是由一系列并行句构成的合体,它的功能是构体中的并行成一个或多个子模

2义顺句模,用以将从外部得的信号或内部运算数据向其他的信号赋值

3信号赋值语设计实体内的果向定的信号或界面端口赋值

4子程序可以程或参数,并将得的赋值于信号

5元件例化其他的设计实体做元件明,并将此元件的端口与其他元件、信号或高层实体的界面端口接。

          

: 21数据选择

ENTTITY  mux2  IS

PORT   d0d1IN  BIT

              selIN  BIT

               sOUT BIT);

END  mux2

ARCHITECTURE  dataflow  OF  mux2  IS

   SIGNAL  sigBIT                 --信号定义语句(内部信号,无方向)

BEGIN

Sig <= (d0 AND sel) OR (NOT sel AND d1)

S<=sig                                                        --功能描述语句

END dataflow

1.3    、子程序和

1.3.1块语句(BLOCK

        模的子系统设计中,传统的硬件设计通常包括一统总电路原理和若干子原理。在VHDL程序设计中,构体是由多个BLOCK构成的,如果将构体比做总电路原理,那BLOCK块则相当于一子原理

BLOCK块语句的构:

   块标号:BLOCK

      接口

     

      BEGIN

      并行块语

      END  BLOCK块标号)

例: B1 BLOCK

         SIGNAL  s1BIT

         BEGIN

               s1 <= a  AND  b;

          B2 BLOCK

          SIGNAL  s2BIT

          BEGIN

                s2<= c  AND  d;

 B3 BLOCK

           BEGIN

            Z <= s2;

  END BLOCK   B3;

        END BLOCK    B2;

            y<= s1;

               END BLOCK    B1;

1.3.2 PROCESS

      PROCESS构是最能体VHDL言特色的句。与BLOCK句一,利用PROCESS构可以描述一个功能独立的路。与BLOCK句不同之是,在系仿真PROCESS构中的句是按序逐条向下行的,而不像BLOCK句那发执行。一个构体中可以有多个并行运行的构,一个程内部是由一系列句来构成的

PROCESS句的

[]  PROCESS  [(敏感信号表)] [IS]

              []

BEGIN

       序描述

END  PROCESS  []

注意:在多个程的构体描述中,号是区分各个程的志。但是号并不是必需的。单进PROCESS,以END  PROCESS

例:两入或非

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY nor2_v2 IS

     PORT(a,b: IN STD_LOGIC;

            y: OUT STD_LOGIC);

END nor2_v2;

ARCHITECTURE behave OF nor2_v2 IS

BEGIN

      PROCESS  (a,b)

    VARIABLE comb : STD_LOGIC_VECTOR(1 DOWNTO 0);

      BEGIN

           comb := a & b;                                           --组合符号

           CASE comb IS

                WHEN "00"=> y <='1';

                WHEN "01"=> y <='0';

                WHEN "10"=> y <='0';

                WHEN "11"=> y <='0';

                WHEN OTHERS => y <='X';             --‘X’不定

           END CASE;

      END PROCESS;

END behave;   

1.3.3子程序(SUBPROGRAM

    VHDL程序与其他言程序中用子程序的目的是相似的,即能有效地完成重性的工作子程序模是利用句定和完成算法的,但子程序不能像程那可以从本构体的其他构中取信号或向信号赋值,只能通子程序用与子程序的界面端口行通信。

        子程序被,首先要初始化,理功能后,将传递给主程序。子程序内部的不能保持,子程序返回后才能被再次用并初始化

子程序有两种类程(PROCEDURE)和函数(FUNCTION

1PROCEDURE

句的写格式

PROCEDURE  程名(参数表)IS

     [明部分]

BEGIN

     句部分

END  PROCEDURE  程名 

例:用设计的子程序

PROCEDURE vector_to_int              --矢量转换成整数

    (a: IN STD_LOGIC_VECTOR;

    x_flag: OUT BOOLEAN;

    q: INOUT   INTEGER) IS

BEGIN

    q := 0;

    x_flag := FALSE;

    FOR  i  IN a’RANGE  LOOP

       q := q*2;                                   --*: 乘, **:乘方

       IF (a (i) =1) THEN

       q := q+1;

       ELSE (a (i) /=1) THEN               -- /=:不等

       x_flag := TRUE;

       END IF;

    END LOOP ;

END vector_to_int;

程名vector_to_int实现将位矢量转换成整数的功能,在束后,将用者的OUTINOUT所定量中,完成子程序和主程序之的数据传递

2.函数

函数的写格式

FUNCTION  函数名  (参数表) RETURN  数据  IS

    [明部分]

 BEGIN

    句;

    RETURN [返回量名]

 END   RETURN   函数名;

: VHDL构造的选择最大的函数程序。

    LIBRARY  IEEE;

    USE IEEE.STD_LOGIC_1164.ALL;

    PACKAGE bpac IS

        FUNCTION max (a: STD_LOGIC_VECTOR;

                  b: STD_LOGIC_VECTOR)

        RETURN STD_LOGIC_VECTOR;

    END bpac;

    PACKAGE  BODY bpac IS

        FUNCTION max (a: STD_LOGIC_VECTOR;

                  b: STD_LOGIC_VECTOR)

RETURN  STD_LOGIC_VECTOR  IS

        VARIABLE tmp: STD_LOGIC_VECTOR (a’RANGE);

        BEGIN

            IF (a>b) THEN

            tmp := a;

            ELSE

            tmp := b;

            END IF;

    RETURN tmp;

    END;

   END bpac;

1.4   和程序包

和程序包用来描述和保留元件、明函数、子程序等,以便在其它设计中可以随引用些信息,提高设计效率。

1.4.1 LIBRARY

      经编译后的数据的集合,它存放包集合定体定构定和配置定

库语句的格式

    LIBRARY  

USE指明中的程序包。一旦明了和程序包,整个设计实体都可以访问用,但其作用范围仅限于所明的设计实USE句的使用将使所明的程序包设计实体部分或全部

USE句有以下两常用的格式:

USE .程序包名.目名;

USE .程序包名.ALL;

第一种语句格式的作用是向本设计实放指定中的特定程序包内的所定的目。

第二种语句格式的作用是向本设计实放指定中的特定程序包内的所有内容

例如:

            LIBRARY IEEE

            USE IEEE.STD_LOGIC_1164.ALL;

            USE IEEE.STD_LOGIC_1164.STD_ULOGIC;

       此例中,第一个USE句表明打IEEE中的STD_LOGIC_1164程序包,并使程序包中的所有公共句后面的VHDL设计实体程序全部放,关键词ALL代表程序包中的所有源。第二个USE放了程序包STD_LOGIC_1164中的STD_ULOGIC数据

STD_ULOGIC :可枚数据

注意:库说句的作用范从一个始到它所属的构体、配置止,当一个源程序中出两个以上,两条作使用设计实句前重复书

例:

LIBRARY IEEE                               --使用

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY and IS

     

END and

ARCHITECTURE dataflow OF and IS

     

END dataflow;

CONFIGURATION c1 OF and IS                -- CONFIGURATION(配置)

     

AND c1;

LIBRARY IEEE                                   --使用

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY or IS

CONFIGURATION c2 OF and IS

     

AND c2;

1.4.2  程序包

程序包也叫包集合,主要用来存放各个设计都能共享的数据型、子程序明、属性明和元件明等部分。设计者使用只要用USE子句明即可。

        程序包由两部分成:程序包首和程序包体。

程序包的一般写格式如下:

PACKAGE   程序包名   IS

END [PACKAGE] 程序包名;                           --程序包首

PACKAGE BODY 程序包名 IS

                                                                            --程序包体

   END [PACKAGE BODY] [程序包名]

:

USE STD.STD_LOGIC.ALL

PACKAGE math IS

     TYPE tw16               IS ARRAY0 TO 15OF T_WLOGIC

     FUNCTION add abIN tw16RETURN tw16

     FUNCTION sub abIN tw16RETURN tw16

END math

PACKAGE BODY math IS

FUNCTION vect_to_intstw16);

     RETURN INTEGER IS

     VARIBLE resultINTEGER :=0;

BEGIN

    FOR i IN 0 TO 7 LOOP

    result := result*2;

    IF s(i)=’1’THEN

    result := result+1

    END IF;

    END LOOP ;

RETURN result;

END vect_to_int;

FUNCTION int_to_tw16(s:INTEGER);

   RETURN tw16 IS

   VARIBLE result: tw16;

   VARIBLE digit: INTEGER:=2**15;

   VARIBLE local: INTEGER;

BEGIN

   local := s;

   FOR i IN 15 DOWNTO 0 LOOP

       IF local/ digit>=1 THEN

       Local := local- digit;

       ELSE

       result (i) :=0;

       END IF;

       digit := digit/2;

   END LOOP ;

RETURN result;

END int_to_tw16;

FUNCTION add(a,b:IN tw16);

RETURN tw16 IS

   VARIBLE result: INTEGER;

 

BEGIN

   result := vect_to_int (a)+ vect_to_int (b);

   RETURN int_to_tw16(result);

END add;

FUNCTION sub(a,b:IN tw16);

RETURN tw16 IS

   VARIBLE result: INTEGER;

BEGIN

   result := vect_to_int (a)+ vect_to_int (b);

   RETURN int_to_tw16(result);

END sub;

END math;

此例的程序包是由程序包首和程序包体两部分成。程序包首定了数据型和函数的明,程序包体中才具体描述实现该函数功能的句和数据的赋值这种描述的好是,当函数的功能需要做某些整或数据赋值需要,只要改程序包体的相关语句就可以了,而无需改程序包首的明,这样就使得需要重新编译数目尽可能的减少了。

1.5  配置

在用VHDL描述硬件,常常采用构描述方式和混合描述方式。在描述方式中,常常需要将其他设计实体作元件行引用,这时需要将不同元件通配置安装到不同的设计实体中VHDL提供了配置句用于描述各种设计实体和元件之间连系以及设计实体和构体之

1.5.1

配置句的基本格式

CONFIGURATION   配置名  OF  体名  IS

      FOR  构体名

      END   FOR

END   配置名;

例:与、或、与非、或非、异或,5构体共用一个

LIBRARY  IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY example_v IS

       PORT (a : IN STD_LOGIC;

             b : IN STD_LOGIC;

             y : OUT STD_LOGIC);

END example_v;

ARCHITECTURE and2_arc OF example_v IS

  BEGIN

         y <= a AND b;

  END and2_arc;

ARCHITECTURE or2_arc OF example_v IS

  BEGIN

         y <= a OR b;

  END or2_arc;

ARCHITECTURE nand2_arc OF example_v IS

  BEGIN

         y <= NOT(a AND b);

  END nand2_arc;

ARCHITECTURE nor2_arc OF example_v IS

  BEGIN

         y <= NOT(a OR b);

  END nor2_arc;

ARCHITECTURE xor2_arc OF example_v IS

  BEGIN

         y <= a XOR b;

  END xor2_arc;

CONFIGURATION cfg1 OF example_v IS

            FOR and2_arc

            END FOR;

END cfg1;

CONFIGURATION cfg2 OF example_v IS

            FOR or2_arc

            END FOR;

END cfg2;

CONFIGURATION cfg3 OF example_v IS

            FOR nand2_arc

            END FOR;

END cfg3;

CONFIGURATION cfg4 OF example_v IS

            FOR nor2_arc

            END FOR;

END cfg4;

CONFIGURATION cfg5 OF example_v IS

            FOR xor2_arc

            END FOR;

END cfg5;

在上例( example_v)中,有5个不同的构体,分用来完成二入的逻辑与、或、与非、或非和逻辑异或的运算操作。在程序中使用了5个默配置句来指明设计实example_v和哪个构体一起成一个完整的设计:配置cfg1将与逻辑结构体配置给实体;cfg2将或逻辑结构体配置给实体;cfg3将与非逻辑结构体配置给实体;cfg4将或非逻辑结构体配置给实体;cfg5将异或逻辑结构体配置给实体。在行模候,将根据所编译的是上面的哪个配置来决定要行模构体,也就是最后一个被编译构体(异或逻辑)将被模,下就是异或逻辑的仿真波形

异或仿真波形

1.5.2  构体的配置

构体的配置主要是用来对结构体中引用的元件行配置。

构体的配置的写格式:

FOR  <元件例化>:<元件名>USE ENTITY <>.<体名(体名)>;

1位全加器的构成构体的配置的用法:

 

 

 

 

 

 

 


将两入与、或、异或门设置成通用例化元件由构体引用。

--入与源代

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY and2_v IS

       PORT(a: IN STD_LOGIC;

            b: IN STD_LOGIC;

            y: OUT STD_LOGIC);

END and2_v;

ARCHITECTURE and2_arc OF and2_v IS

BEGIN

     y <= a AND b;

END and2_arc;

CONFIGURATION and2_cfg OF and2_v IS

           FOR and2_arc

           END for;

END and2_cfg;

and2_v仿真波形

--入或源代

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY or2_v IS

       PORT(a: IN STD_LOGIC;

            b: IN STD_LOGIC;

            y: OUT STD_LOGIC);

END or2_v;

ARCHITECTURE or2_arc OF or2_v IS

BEGIN

     y <= a OR b;

END or2_arc;

CONFIGURATION or2_cfg OF or2_v IS

           FOR or2_arc

           END for;

END or2_cfg;

or2_v仿真波形

--异或源代

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY xor2_v IS

       PORT(a: IN STD_LOGIC;

            b: IN STD_LOGIC;

            y: OUT STD_LOGIC);

END xor2_v;

ARCHITECTURE xor2_arc OF xor2_v IS

BEGIN

     y <= a XOR b;

END xor2_arc;

CONFIGURATION xor2_cfg OF xor2_v IS

           FOR xor2_arc

           END for;

END xor2_cfg;

              异或xor2_v仿真波形

--全加器源代

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY add1_v IS

       PORT(A : IN STD_LOGIC;

            B : IN STD_LOGIC;

          Cin : IN STD_LOGIC;

           Co : OUT STD_LOGIC;

            S : OUT STD_LOGIC);

END add1_v;

ARCHITECTURE structure OF add1_v IS

         COMPONENT and2_v

            PORT(a : IN STD_LOGIC;

                 b : IN STD_LOGIC;

                 y : OUT STD_LOGIC);

         END COMPONENT;

COMPONENT or2_v

            PORT(a : IN STD_LOGIC;

                 b : IN STD_LOGIC;

                 y : OUT STD_LOGIC);

         END COMPONENT;

COMPONENT xor2_v

            PORT(a : IN STD_LOGIC;

                 b : IN STD_LOGIC;

                 y : OUT STD_LOGIC);

         END COMPONENT;

 SIGNAL tmp1,tmp2,tmp3 : STD_LOGIC;

         FOR U1,U2 : xor2_v USE ENTITY work.xor2_v( xor2_arc);

         FOR U3,U4 : and2_v USE ENTITY work.and2_v( and2_arc);

         FOR U5    : or2_v USE ENTITY work.or2_v( or2_arc);

     全加器add1_v仿真波形

实际上如果仅仅要构成1位全加器,采用行描述方式只需几条逻辑语句即可。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY add1_v IS

       PORT(A : IN STD_LOGIC;

            B : IN STD_LOGIC;

          Cin : IN STD_LOGIC;

           Co : OUT STD_LOGIC;

            S : OUT STD_LOGIC);

END add1_v;

ARCHITECTURE structure OF add1_v IS

    BEGIN

   S <= A XOR B XOR Cin;

   Co <= (A XOR B) AND Cin  OR  (A AND B);

END structure;

全加器add1_v仿真波形

 

 

 

这篇关于第一章 VHDL基本结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/581257

相关文章

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

Java 多线程的基本方式

Java 多线程的基本方式 基础实现两种方式: 通过实现Callable 接口方式(可得到返回值):

Java基础回顾系列-第一天-基本语法

基本语法 Java基础回顾系列-第一天-基本语法基础常识人机交互方式常用的DOS命令什么是计算机语言(编程语言) Java语言简介Java程序运行机制Java虚拟机(Java Virtual Machine)垃圾收集机制(Garbage Collection) Java语言的特点面向对象健壮性跨平台性 编写第一个Java程序什么是JDK, JRE下载及安装 JDK配置环境变量 pathHe

C语言程序设计(选择结构程序设计)

一、关系运算符和关系表达式 1.1关系运算符及其优先次序 ①<(小于) ②<=(小于或等于) ③>(大于) ④>=(大于或等于 ) ⑤==(等于) ⑥!=(不等于) 说明: 前4个优先级相同,后2个优先级相同,关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符 1.2关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符