tag 标签: 语法

相关博文
  • 热度 20
    2013-10-25 22:11
    1783 次阅读|
    0 个评论
    module pcie( input clk, input rst_n,output reg numout,input data     ); reg i; always@(posedge clk or negedge rst_n)   begin   if(!rst_n)   numout=0;   else begin   for(i=0;i13;i=i+1) begin        if (data )     numout=numout+1;   end end end endmodule     注意 综合需要 将 for  循环展开  资源 消耗如下     2  module pcie( input clk, input rst_n,output reg numout,input data     ); reg cnt; reg i; always@(posedge clk or negedge rst_n)   begin   if(!rst_n)   numout=0;   else begin   for(i=0;i13;i=i+1) begin        if (data )     numout=numout+1;        case (i) 1-7:begin   cnt=cnt+1;   end   8:begin   cnt=cnt-1;   end   endcase   end   end   end endmodule  case   语句可以 做嵌套  做多个值case            
  • 热度 10
    2013-2-20 20:56
    1165 次阅读|
    0 个评论
      转换函数: conv_std_logic_vector(integer,m+1) 把integer型的数据转换为m+1位的标准矢量值 variable a : integer range 0 to 7; conv_std_logic_vector(a,3);   conv_integer(addr) 将标准矢量值转换为integer型数据 signal adr_in : integer range 0 to 7; signal adr : std_logic_vector(2 downto 0); addr_in = conv_integer(adr);   函数 ARCHITECTURE demo OF func IS   FUNCTION sam(x ,y ,z : STD_LOGIC) RETURN STD_LOGIC IS   BEGIN     RETURN ( x AND y ) OR y  ;   END FUNCTION sam ;   BEGIN     PROCESS ( a )     BEGIN      m(0) = sam( a(0),  a(1),  a(2) ) ;      m(1) = sam( a(2),  a(0),  a(1) ) ;      m(2) = sam( a(1),  a(2),  a(0) ) ;     END PROCESS ;   END ARCHITECTURE demo ;   signal temp : std_logic_vector(3 downto 0 ); temp1 = '0'temp ;  就是0与temp并置,使得temp变为五位的标准矢量
  • 热度 14
    2013-1-29 21:24
    2131 次阅读|
    1 个评论
      容易忽视的问题 : generic map(FIFO_width=8, FIFO_depth=100)    注意是逗号,不是分号 signal 命名第一个字符不能为数字 1s_valid(×),,标示符必须以英文开头,标示符中的英文字母部分大小写   1.  信号变量要赋初值   变量是一个局部变量,只能在进程和子程序中使用。变量赋值是一种理想化的数据传输,立即发生,没有延时。初始值不是必需的,综合过程中综合其将略去所有的初始值。 variable 变量名:数据类型  :=初始值 variable a :integer; variable b,c : integer:=2; variable d: std_logic;   signal :信号初始值不是必需的,信号变量具有全局性 signal temp :std_logic:=0; signal flag : bit; signal a : integer range 0 to 15; signal 支持自定义设计数据类型 type four is ('X','0','1','Z'); signal s1 : four; signal s2 : four := 'X';   others  省略赋值操作符 others =X 在较多位的位矢量赋值中做省略化赋值 signal d1 : std_logic_vector( 7 downto 0); d1=(others='0'); d1 =(1='1';4='1',others='0')   2. 当信号用于顺序描述语句如 process 中时,信号的值不是立即更新的,只有当其所在的 process 函数或过程完成之后才进行更新。若信号的变化立即赋值,不随时钟,需要将语句放在 process 之外,   3. 信号的多次赋值,一个进程中,最后一次赋值有效。 signal 变量要在结构体中声明,不能在进程中声明。 signal 变量可以和 variable 间互相赋值,需要在 process 完成之后进行更新。 4. when 语法结构 y = a1 when s = '1' else         a2 when s = '0'; .when 并行语句不能放在 process 中 利用 when 语句组合逻辑产生寄存器 ARCHITECTURE behav OF EXAP IS SIGNAL Y : STD_LOGIC;     BEGIN       Y =  a AND b WHEN clk ELSE             Y;       Y1 = Y ;      END behav 5.i nteger 必须说明 range 范围,否则无法综合,但可以仿真   6.   请注意 VHDL 综合器要求 WAIT 语句必须放在进程的首部或尾部并且一个进程中的 WAIT 语句不能超过一个  wait until clk'event and clk = '1'          y = a; 7. 赋值语句 if 位于同一个进程时,对同一变量赋值,只有最后一个得到赋值更新,而忽略了其它的赋值,因此在一个进程中最好只放一个 if 语句 可以考虑 when 并行语句,对比一下两段代码的区别 PROCESS(enable,input3, input2, input1, input0 )    BEGIN    IF enable(3) = '1' THEN output = input3 ;    ELSE output =(OTHERS = 'Z'); END IF ;    IF enable(2) = '1' THEN output = input2 ;    ELSE output =(OTHERS = 'Z'); END IF ;    IF enable(1) = '1' THEN output = input1 ;    ELSE output =(OTHERS = 'Z'); END IF ;    IF enable(0) = '1' THEN output = input0 ;       -- 最后一个 if 赋值有效    ELSE output =(OTHERS = 'Z'); END IF ;       END PROCESS;   ARCHITECTURE multiple_drivers OF tristate2 IS         -- 结构体中每一条并行语句等同于一个独立运行的进程,独立检测各个并行语句中的敏感信号 BEGIN output = input3 WHEN enable(3) = '1' ELSE (OTHERS = 'Z'); output = input2 WHEN enable(2) = '1' ELSE (OTHERS = 'Z'); output = input1 WHEN enable(1) = '1' ELSE (OTHERS = 'Z'); output = input0 WHEN enable(0) = '1' ELSE (OTHERS = 'Z'); END multiple_drivers;   例 1: architecture Behavioral of var_sig_test is signal q2 : std_logic; --signal 声明在结构体中完成,不可在 process 中 begin process(clk) variable q1,q3 : std_logic; begin if clk'event and clk='1' then q1 := a2; --signal 与 variable 赋值,需要在 process 完成之后更新 y2 = q1; -- 生成两个寄存器,信号的赋值要在 process 完成之后形成 q3 := q1; --variable 赋值立即执行 y1 = q3; end if; end process; end Behavioral; RTL图:   例2 a 与 b 的值互换 a,b 都等于 b 的初始值 signal a,b : std_logic; -- 定义信号 process(a, b)                                                               process       begin                                                                      variable 1,b:std_logic;          a = b ;                                                            begin          b = a ;                                                                 a:=b; end  process ;                                                                 b:=a; 例 3  ARCHITECTURE mul OF tris IS  BEGIN   PROCESS(three_s,clk, input )    BEGIN      IF (three_s = '0') THEN        output = 'Z';        ELSIF (clk ='1' AND clk'EVENT) THEN           IF (cnd) THEN             output =  input;                  -- 产生额外的寄存器           END IF;      END IF;   END PROCESS;  END mul PROCESS(clk, cnd, input)   -- 通过两个进程减少寄存器的使用,合理地使用三态门   BEGIN     IF (clk ='1' AND clk’EVENT) THEN       IF (cnd) THEN          temp =  input;       END IF;  END IF;   END PROCESS;   PROCESS(three_s, temp)        -- 此进程产生三态门   BEGIN     IF (three_s = '0') THEN  output =  'Z';     ELSE         output =  temp;     END IF;   END PROCESS; END ARCHITECTURE activ;  
相关资源
  • 所需E币: 1
    时间: 2023-11-10 16:42
    大小: 1.02MB
    上传者: Argent
    第17讲Makefile基本语法
  • 所需E币: 3
    时间: 2023-6-16 19:41
    大小: 18.79MB
    上传者: 电子阔少
    Python语言是一种简单、易学、高效的编程语言,在科学计算、数据分析、Web开发等领域得到了广泛的应用。本文将介绍的Python语法技巧,让你事半功倍,提高代码的效率和可读性。
  • 所需E币: 5
    时间: 2022-11-4 11:48
    大小: 4.5MB
    上传者: 胖胖0708
    C++语法全能书籍,非常适合看
  • 所需E币: 4
    时间: 2022-10-29 16:04
    大小: 3.45MB
    上传者: 秋刀红鱼
    verilog语法介绍与规范、Vivado操作教程与实操
  • 所需E币: 0
    时间: 2022-8-1 21:26
    大小: 441.83KB
    上传者: samewell
    JavaScript语法手册.pdf
  • 所需E币: 1
    时间: 2022-5-5 14:27
    大小: 412.39KB
    上传者: 西风瘦马
    可综合的Verilog语法(剑桥大学,影印).pdf
  • 所需E币: 1
    时间: 2022-3-30 18:08
    大小: 902.5KB
    上传者: Argent
    Verilog_HDL的基本语法
  • 所需E币: 0
    时间: 2022-3-3 17:29
    大小: 490KB
    上传者: samewell
    Python语法基础3-运算符.ppt
  • 所需E币: 0
    时间: 2021-4-24 19:44
    大小: 316.5KB
    上传者: Argent
    随着FPGA技术的不断发展,许多消费类产品都嵌入了FPGA程序,ZYNQ架构属于主流,搜集的部分有关FPGA学习资料,希望对您有所帮助,欢迎下载。
  • 所需E币: 0
    时间: 2021-4-24 19:44
    大小: 654KB
    上传者: Argent
    随着FPGA技术的不断发展,许多消费类产品都嵌入了FPGA程序,ZYNQ架构属于主流,搜集的部分有关FPGA学习资料,希望对您有所帮助,欢迎下载。
  • 所需E币: 0
    时间: 2021-4-24 19:44
    大小: 294.5KB
    上传者: Argent
    随着FPGA技术的不断发展,许多消费类产品都嵌入了FPGA程序,ZYNQ架构属于主流,搜集的部分有关FPGA学习资料,希望对您有所帮助,欢迎下载。
  • 所需E币: 0
    时间: 2021-4-24 19:44
    大小: 193.5KB
    上传者: Argent
    随着FPGA技术的不断发展,许多消费类产品都嵌入了FPGA程序,ZYNQ架构属于主流,搜集的部分有关FPGA学习资料,希望对您有所帮助,欢迎下载。
  • 所需E币: 0
    时间: 2021-4-13 18:12
    大小: 5.17KB
    上传者: xgp416
    Perl的简单语法(与C语言语法的异同).rar
  • 所需E币: 0
    时间: 2021-3-24 18:48
    大小: 179.84KB
    上传者: samewell
    C语言语法基础本文将对计算机编程的入门语言——C语言中的基本语法,包括判断,循环,函数,结构体,数组等概念进行介绍讲解。判断语句在生活中我们经常要做出选择,程序也是如此。
  • 所需E币: 4
    时间: 2021-3-17 17:31
    大小: 179.84KB
    上传者: czdian2005
    C语言语法基础.zip
  • 所需E币: 3
    时间: 2021-3-8 09:39
    大小: 1.54MB
    上传者: 西风瘦马
        为什么要学硬件语法篇:大家都知道软件设计使用软件编程语言,例如我们熟知的C、Java等等,而FPGA设计使用的是HDL语言,例如VHDL和VerilogHDL。说的直白点,FPGA的设计就是逻辑电路的实现,就是把我们从数字电路中学到的逻辑电路功能,使用硬件描述语言(Verilog/VHDL)描述出来,这需要设计人员能够用硬件编程思维来编写代码,以及拥有扎实的数字电路功底。    硬件语法篇包含了哪些内容:该篇不仅仅是介绍了VerilogHDL基本概念和语法,更着重讲解了VerilogHDL的基本设计思想及优良的代码书写规范和风格。
  • 所需E币: 0
    时间: 2020-12-27 22:49
    大小: 64.66KB
    上传者: stanleylo2001
    MATLAB中的基本语法和语句示例代码
  • 所需E币: 1
    时间: 2020-12-24 15:23
    大小: 1.54MB
    上传者: 西风瘦马
    《HELLOFPGA》-硬件语法篇
  • 所需E币: 0
    时间: 2020-12-10 22:32
    大小: 215.1KB
    上传者: LGWU1995
    C语言语法基础.pdf
  • 所需E币: 0
    时间: 2020-12-9 23:52
    大小: 30KB
    上传者: Goodluck2020
    Perl的简单语法(与C语言语法的异同).doc