当前位置: 首页 > news >正文

宜昌市网站建设公司如何建导航网站

宜昌市网站建设公司,如何建导航网站,网站通cms,网页设计ppt模板SystemVerilog声明的位置 1、包#xff08;package#xff09; (1)包的定义 SystemVerilog的包在package和endpackage之间定义 包中可以包含的可综合的结构有 #xff08;1#xff09;parameter和localparam常量定义 #xff08;2#xff09;const变量定义 #xff08;…SystemVerilog声明的位置 1、包package (1)包的定义 SystemVerilog的包在package和endpackage之间定义 包中可以包含的可综合的结构有 1parameter和localparam常量定义 2const变量定义 3typedef用户定义类型 4全自动task和function定义 5从其他包中import语句 6操作符重载定义 在包中还可以进行全局变量声明、静态任务定义和静态函数定义。但是这些是不可综合的。 包是一个独立的声明空间不需要包含在Verilog模块中。 package definitions;paramter VERSION 1.1;typedef enum{ADD,SUB,MUL} opcodes_t;typedef struct{logic [31:0] a,b;opcodes_t opcode;}instruction_t;function automatic [31:0] multiplier(input [31:0] a,b);//用户定义的32位乘法return a*b;endfunction endpackage 包中的参数不能重新定义 包中可能包含parameter、localparam和const等常量定义。paramter和localparam常量是Verilog结构。const常量是SystemVerilog常量。在Verilog中模块module的每个实例可以对paramter常量重新定义但不能对localparam常量重新定义。但是在包中的paramter不能被重新定义因为它不是模块实例的一部分。在包中,parameter和localparam是相同的。 2引用包的内容 模块和接口可以用四种方式引用包中的定义个声明 1用范围解析操作符直接引用 2将包中特定子项导入到模块或接口中。 3用通配符导入包中的子项到模块或接口中 4将包中子项导入到$unint声明域中 用来引用包中的子项使用作用域解析操作符进行包的引用 相对于VerilogSyetemVerilog增加了作用域解析操作符“”。这一操作符允许通过包的名称直接引用包然后选择包中特定的定义或声明。包名和包中子项由双冒号隔开。 使用作用域解析操作符进行包的引用有利于源代码的可读性但是当包中的一项或多项需要在模块中多次引用时每次显示地引用包的名称太过于麻烦了我们可能希望将包中子项导入到设计块中 module ALU ( input definitions::instruction_t IW,input logic clock,output logic[31:0] result ); always_ff (posedge clock) begincase(IW.opcode)definitions::ADD : result IW.a IW.b;definitions::SUB : result IW.a - IW.b;definitions::MUL : result definitions::multiplier(IW.a,IW.b);endcase end endmodule导入包中的特定子项 SystemVerilog允许用import语句将包中特定子项导入到模块中。当包中定义或声明导入到模块或接口中时该子项在模块或接口内是可见的就好像它是该模块或接口内是可见的就好像它是该模块或接口中的一个局部定义名一样这样就不需要每次引用包中子项时都显示引用包名。导入包定义或声明可以简化模块中的代码。 module ALU ( input definitions::instruction_t IW,input logic clock,output logic[31:0] result ); import definitions::ADD; import definitions::SUB; import definitions::MUL; import definitions::multiplier; always_comb (posedge clock) begincase(IW.opcode)ADD : result IW.a IW.b;SUB : result IW.a - IW.b;MUL : result multiplier(IW.a,IW.b);endcase end endmodule注意导入枚举类型定义并不导入那个定义使用的元素 import definitions::opcode_t //该导入语句不会起作用这个导入语会使用户定义的类型opcode_t在模块中可见。但是它不会使opcode_t中使用的枚举元素可见。为了使元素在模块内成为可见的局部名称每个枚举元素必须显示导入。当有许多子项需要从包中导入时使用通配符导入更使用。 包中子项的通配符导入 SystemVerilog允许包中子项使用统配符导入而不用指定包中子项名称通配符记号是一个星号* import definitions::*;//通配符导入 //通配符导入可使包中所有子项都成为可见的 //通配符导入并不自动导入整个包当使用通配符导入包中子项时只有在模块或接口中实际使用子项才会被真正导入。没被引用的包中的定义和声明不会被导入。 模块或接口内的局部定义和声明优先于通配符导入。包中指定子项名称的导入也优先于通配符导入。从设计者的角度来看通配符导入只是简单地将包添加到标识符identifier搜索规则中。软件工具先搜索局部声明然后在通配符导入的包中搜索最后工具将在$unit声明域中搜索。 module ALU ( input definitions::instruction_t IW,input logic clock,output logic[31:0] result ); import definitions::*;//通配符导入always_comb (posedge clock) begincase(IW.opcode)ADD : result IW.a IW.b;SUB : result IW.a - IW.b;MUL : result multiplier(IW.a,IW.b);endcase end endmodule对于模块中端口IW包名仍须显示引用因为不能在关键字module和模块端口定义之间加入一个import语句。但是有一种方法可以避免在端口列表中显示引用包的名称那就是使用$unit声明域。 为了综合包中的任务和函数必须是自动的 当模块引用一个包中定义的任务或函数时综合会复制该任务或函数的功能并把它看做是已经在模块中定义了的。为了能够综合包中定义的任务和函数必须声明为automatic,并且不能包含静态变量。这是因为自动任务和函数的储存区在每次调用时才会分配。因此引用包中自动任务或函数的每个模块看是不是被其他模块共享的该任务或函数储存区的唯一副本。这就保证了综合前对包中任务或函数引用的仿真行为与中和后的行为相同综合后这些任务或函数的功能就在引用的一个或多个模块中实现。 综合不支持包中变量声明。仿真时包中的变量会被导入该变量的所有模块共享。一个模块向量写值另一模块看到的就将是新值。这类不通过模块端口传递数据的模块间通信是不可综合的。
http://wiki.neutronadmin.com/news/274571/

相关文章:

  • 重庆网站制作教程哪些企业用wordpress建站
  • 保定网站制作系统wordpress 发帖机
  • 北京移动端网站优化定制软件开发流程
  • 工信部网站实名认证怎么做济南网站建设泰观网络
  • h5响应式网站技术wordpress空页面模板
  • 昆明网站开发多少钱wordpress 灯箱 插件
  • 如何提高网站访客数设计制造中国第一架飞机的人是
  • 互站网怎么样加强公司网站建设
  • jsp电子商务网站建设实验腾讯邮箱登录入口
  • 外贸网站优化哪家好高端医疗网站建设
  • 用备份的网站代码做网站步骤网站关键词分隔符
  • 南充市住房和城乡建设局网站辽宁网站seo
  • 网站策划与建设阶段应该做什么1+手机官网首页
  • 综合电子商务型企业网站WordPress简约资讯主题
  • 唐山网站优化万户网络技术有限公司官网
  • 网站开发好什么进行界面的优化2个淘宝可以做情侣网站么
  • 17网站一起做网店河北趣闲赚
  • 互联网信息服务 网站备案wordpress开发cms
  • 华为公司网站建设案例分析深圳企业网站建设设计
  • 手机做logo用什么网站绵阳网站建设
  • 口碑好的秦皇岛网站建设哪家好网站首页横版图怎么做
  • 网站建设套模板视频信誉好的镇江网站优化
  • 组建网站寮步做网站公司
  • 做网站一定要用服务器吗门户网站系统建设方案
  • 门户网站的特点做电影网站如何不侵权
  • 网站怎么做免费seo搜索sns营销
  • 网站建设技能描述烟台网站建设 共赢
  • 哈尔滨网站建设赚钱么asp装修公司网站源码
  • 天津河东做网站公司个人公众号怎么做文章推广
  • 免费永久网站空间岳阳建设公司网站