FPGA语法.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FPGA语法

erliog hdl语法要点 一、常用的数据类型 1.四种常用的数据类型 reg,wire,integer,parameter 2.常量 (1)数字 A.整数 1)B或b--二进制整数 2)D或d--十进制 3)H或h--十六进制 4)O或o--八进制 例子: 11b00000000000 注意:*位宽可省略,位宽由机器指定 ????? *进制也可省略,数字---默认是十进制 ?parameter READFLAG =11b00100000000;? // ?parameter WRITERAM =11b01000000000;? //写RAM ?parameter READRAM =11b10000000000;? //读RAM ?parameter cur_inc?????? =1; ?parameter cur_dec?????? =0; ?parameter cur_shift???? =1; SETMODE?? :begin lcd_rs=0;lcd_rw=0;data[7:2]=6b000001;data[1]=cur_inc;data[0]=cur_noshift; B.x和z值,x--不定值,z-高阻值 data=8bzzzz_zzzz; C.负值的写法 -8d5 (正确) 8d-5 (错误) D.下划线 8b0100_1100 8上面的两个值一样,加下划线为增加可读性 8b_0100_1100 (错误) (2)参数 parameter 参数名1=表达式1,参数名2=表达式3; 4.变量 reg[3:0] dataout_buf[3:0]; reg[3:0] dataout_code; integer i; wire[7:0] cal; assign cal[0]=(dataout_buf[0]==9)?1:0;??????? //个位向十位进位标志 assign cal[1]=(cal[0]dataout_buf[1]==9)?1:0;//十位向百位进位标志 assign cal[2]=(cal[1]dataout_buf[2]==9)?1:0;//百位向千位进位标志 assign cal[3]=(cal[2]dataout_buf[3]==9)?1:0;//千位向万位进位标志 (1)存储器型变量 reg[3:0] dataout_buf[5:0]; //dataout_buf--存储器名,[5:0]--存储器的个数,[3:0]--每个存储器的位宽 注意存储器可单个使用。 (2)网络型变量: 常用的有两种:wire,tri(三态) (3)寄存器变量 寄存器是数据存储单元的抽象。寄存器变量,通过赋值语句可以改变寄存器存储的值。 二、常用的运算符 1.重点: (1)三目运算 r=s?t:u;//可形成一个条件语句 (2)取反 ???3b001: begin????//发“来” ????cnt=cnt+1; ????if(cnt==22h3fffff)? ?????state=3b010; ????if(clk_div2!=lai) ?????clk_div2=clk_div2+1; ????else begin ?????clk_div2=0; ?????out=~out; ????end (3)位拼接运算符--{} 1)可以把两个或多个信号的某些位拼接起来进行运算操作。 2)格式: ?? {信号1的某几位,信号2的某几位,...,信号n某几位} ?? dial[7:0]={led[7],led[6],....,led[0]}; ?? dial[7]=led[7]; ?? dial[6]=led[6]; ?? .......... ?? dial[0]=led[0]; ??? ?? dial[7:0]={led[7:4],....,led[0]}; ??? 3)具有重要参考价值的拼接方式: ?{a,b[3:0],w,3b101};//不同位宽的变量和整数值一起可以拼接成一个新的变量 ?{a,b[3],b[2],b[1],b[0],w,1b1,1b0,1b1}; ?注意: ?A.dial[7:0]=led[7:0] //注意的做不到每个控制每个led灯 ?B.{4{w}}={w,w,w,w} ?C.{b,{3(a,b)}}={b,a,b,a,b,a,b} (4)缩减运算符---是单目运算,与、或、非运算 1)先将操作数的第一位与第二位进行与或非运行 2)将运算结果与第三位进行与、或、非运算,直至最后一位。 使用方法: reg [3:0] B; reg C; C= B; 相当于: C=((B[0]B[1])B[2])B[3]; 三、块语句 1.常用的是两种语句块: begin ...end--顺序

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档