- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.2 verilog hdl的基本语法
8位数据比较器 * Fork略 * 支持 * 支持 * 不支持 * 任务的定义与调用必须在同一个module模块内。没有端口名,(第178页) 但需紧接着进行入出端口和数据类型的说明。 调用时端口名排序与类型必须与任务定义时一致。 * * 3.5.2 case语句 case语句通常用于微处理器的指令译码,它的一般形式如下: case(表达式) case分支项 case分支项 default endcase casez(表达式) case分支项 endcase casex(表达式) case分支项 endcase case语句是一种多分支选择语句,if语句只有两个分支可供选择,而实际问题中常常需要用到多分支选择,Verilog语言提供的case语句直接处理多分支选择。 * * reg [15:0] rega; reg [9:0] result; case(rega) 16 d0: result = 10 b0111111111; 16 d1: result = 10 b1011111111; 16 d2: result = 10 b1101111111; 16 d3: result = 10 b1110111111; 16 d4: result = 10 b1111011111; 16 d5: result = 10 b1111101111; 16 d6: result = 10 b1111110111; 16 d7: result = 10 b1111111011; 16 d8: result = 10 b1111111101; 16 d9: result = 10 b1111111110; default: result = bx; endcase * 使用条件语句不当在设计中生成没想到的锁存器 module burried_ff(c,b,a); output c; intput a,b; always @(a or b) begin if((b==1)(a==1)) c=ab; end endmodule else c=0; * module voter7(pass,vote); output pass; input[7:1] vote; reg[2:0] sum; integer i; reg pass; always @(vote) begin sum=0; for(i=1; i=7; i=i+1) if(vote[i]) sum=sum+1; if(sum[2]) pass=1; else pass=0; end endmodule 用for语句描述的7人表决器 * begin: init_mem reg[7:0] tempi; for(tempi=0;tempimemsize;tempi=tempi+1) memory[tempi]=0; end 用for语句来初始化memory * 用for循环语句来实现前面用repeat语句实现的乘法器 parameter size = 8, longsize = 16; reg[size:1] opa, opb; reg[longsize:1] result; begin:mult integer bindex; result=0; for( bindex=1; bindex=size; bindex=bindex+1 ) if(opb[bindex]) result = result + (opa(bindex-1)); end * 对rega这个8位二进制数中值为1的位进行计数 begin: count1s reg[7:0] tempreg; count=0; for( tempreg=rega; tempreg; tempreg=tempreg1 ) if(tempreg[0]) count=count+1; end * 6.7 编译预处理(编译向导) Verilog HDL语言和C语言一样也提供了编译预处理的功能。 “编译预处理”是Verilog HDL编译系统的一个组成部分。Verilog HDL语言允许在程序中使用几种特殊的命令(它们不是一般的语句)。Verilog HDL编译系统通常先对这些特殊的命令进行“预处理”,然后将预处理的结果和源程序一起在进行通常的编译处理。 在Verilog HDL语言中,为了和一般的语句相区别,这些预处理命令以符号“ `”开头(注意这个符号是不同于单引号“ ‘”的)。 * 6.7.1 宏替换 `define `define用于将一个简单的名字或标
原创力文档


文档评论(0)