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

网站优化标题怎么做cosy wordpress主题

网站优化标题怎么做,cosy wordpress主题,网站建设管理系统,下列属于网页制作平台的是关键词#xff1a;任务 任务与函数的区别 和函数一样#xff0c;任务#xff08;task#xff09;可以用来描述共同的代码段#xff0c;并在模块内任意位置被调用#xff0c;让代码更加的直观易读。函数一般用于组合逻辑的各种转换和计算#xff0c;而任务更像一个过程任务 任务与函数的区别 和函数一样任务task可以用来描述共同的代码段并在模块内任意位置被调用让代码更加的直观易读。函数一般用于组合逻辑的各种转换和计算而任务更像一个过程不仅能完成函数的功能还可以包含时序控制逻辑。下面对任务与函数的区别进行概括 任务 任务声明 任务在模块中任意位置定义并在模块内任意位置引用作用范围也局限于此模块。 模块内子程序出现下面任意一个条件时则必须使用任务而不能使用函数。 1子程序中包含时序控制逻辑例如延迟事件控制等 2没有输入变量 3没有输出或输出端的数量大于 1 Verilog 任务声明格式如下 task task_id ;port_declaration ;procedural_statement ; endtask 任务中使用关键字 input、output 和 inout 对端口进行声明。input 、inout 型端口将变量从任务外部传递到内部output、inout 型端口将任务执行完毕时的结果传回到外部。 进行任务的逻辑设计时可以把 input 声明的端口变量看做 wire 型把 output 声明的端口变量看做 reg 型。但是不需要用 reg 对 output 端口再次说明。 对 output 信号赋值时也不要用关键字 assign。为避免时序错乱建议 output 信号采用阻塞赋值。 例如一个带延时的异或功能 task 描述如下 task xor_oper_iner;input [N-1:0] numa;input [N-1:0] numb;output [N-1:0] numco ;//output reg [N-1:0] numco ; //无需再注明 reg 类型虽然注明也可能没错#3 numco numa ^ numb ;//assign #3 numco numa ^ numb ; //不用assign因为输出默认是reg endtask任务在声明时也可以在任务名后面加一个括号将端口声明包起来。 上述设计可以更改为 task xor_oper_inerinput [N-1:0] numa,input [N-1:0] numb,output [N-1:0] numco ; #3 numco numa ^ numb ; endtask任务调用 任务可单独作为一条语句出现在 initial 或 always 块中调用格式如下 task_id(input1, input2, …,outpu1, output2, …);任务调用时端口必须按顺序对应。 输入端连接的模块内信号可以是 wire 型也可以是 reg 型。输出端连接的模块内信号要求一定是 reg 型这点需要注意。 对上述异或功能的 task 进行一个调用完成对异或结果的缓存。 module xor_oper#(parameter N 4)(input clk ,input rstn ,input [N-1:0] a ,input [N-1:0] b ,output [N-1:0] co );reg [N-1:0] co_t ;always (*) begin //任务调用xor_oper_iner(a, b, co_t);endreg [N-1:0] co_r ;always (posedge clk or negedge rstn) beginif (!rstn) beginco_r b0 ;endelse beginco_r co_t ; //数据缓存endendassign co co_r ;/*------------ task -------*/task xor_oper_iner;input [N-1:0] numa;input [N-1:0] numb;output [N-1:0] numco ;#3 numco numa ^ numb ; //阻塞赋值易于控制时序endtaskendmodule对上述异或功能设计进行简单的仿真testbench 描述如下。 激励部分我们使用简单的 task 进行描述激励看起来就更加的清晰简洁。 其实task 最多的应用场景还是应用于 testbench 中进行仿真。task 在一些编译器中也不支持综合。 timescale 1ns/1nsmodule test ;reg clk, rstn ;initial beginrstn 0 ;#8 rstn 1 ;forever beginclk 0 ; # 5;clk 1 ; # 5;endendreg [3:0] a, b;wire [3:0] co ;initial begina 0 ;b 0 ;sig_input(4b1111, 4b1001, a, b);sig_input(4b0110, 4b1001, a, b);sig_input(4b1000, 4b1001, a, b);endtask sig_input ;input [3:0] a ;input [3:0] b ;output [3:0] ao ;output [3:0] bo ;(posedge clk) ;ao a ;bo b ;endtask ; // sig_inputxor_oper u_xor_oper(.clk (clk ),.rstn (rstn ),.a (a ),.b (b ),.co (co ));initial beginforever begin#100;if ($time 1000) $finish ;endendendmodule // test仿真结果如下。 由图可知异或输出逻辑结果正确相对于输入有 3ns 的延迟。 且连接信号 abco_t 与任务内部定义的信号 numanumbnumco 状态也保持一致。 任务操作全局变量 因为任务可以看做是过程性赋值所以任务的 output 端信号返回时间是在任务中所有语句执行完毕之后。 任务内部变量也只有在任务中可见如果想具体观察任务中对变量的操作过程需要将观察的变量声明在模块之内、任务之外可谓之全局变量。 例如有以下 2 种尝试利用 task 产生时钟的描述方式。 //way1 to decirbe clk generating, not work task clk_rvs_iner ;output clk_no_rvs ;# 5 ; clk_no_rvs 0 ;# 5 ; clk_no_rvs 1 ; endtask reg clk_test1 ; always clk_rvs_iner(clk_test1);//way2: use task to operate global varialbes to generating clk reg clk_test2 ; task clk_rvs_global ;# 5 ; clk_test2 0 ;# 5 ; clk_test2 1 ; endtask // clk_rvs_iner always clk_rvs_global;仿真结果如下。 第一种描述方式虽然任务内部变量会有赋值 0 和赋值 1 的过程操作但中间变化过程并不可见最后输出的结果只能是任务内所有语句执行完毕后输出端信号的最终值。所以信号 clk_test1 值恒为 1此种方式产生不了时钟。 第二种描述方式虽然没有端口信号但是直接对全局变量进行过程操作因为该全局变量对模块是可见的所以任务内信号翻转的过程会在信号 clk_test2 中体现出来。 automatic 任务 和函数一样Verilog 中任务调用时的局部变量都是静态的。可以用关键字 automatic 来对任务进行声明那么任务调用时各存储空间就可以动态分配每个调用的任务都各自独立的对自己独有的地址空间进行操作而不影响多个相同任务调用时的并发执行。 如果一任务代码段被 2 处及以上调用一定要用关键字 automatic 声明。 当没有使用 automatic 声明任务时任务被 2 次调用可能出现信号间干扰例如下面代码描述 task test_flag ;input [3:0] cnti ;input en ;output [3:0] cnto ;if (en) cnto cnti ; endtaskreg en_cnt ; reg [3:0] cnt_temp ; initial beginen_cnt 1 ;cnt_temp 0 ;#25 ; en_cnt 0 ; end always #10 cnt_temp cnt_temp 1 ;reg [3:0] cnt1, cnt2 ; always (posedge clk) test_flag(2, en_cnt, cnt1); //task(1) always (posedge clk) test_flag(cnt_temp, !en_cnt, cnt2);//task(2)仿真结果如下。 en_cnt 为高时任务 (1) 中信号 en 有效 cnt1 能输出正确的逻辑值 此时任务 (2) 中信号 en 是不使能的所以 cnt2 的值被任务 (1) 驱动的共用变量 cnt_temp 覆盖。 en_cnt 为低时任务 (2) 中信号 en 有效所以任务 (2) 中的信号 cnt2 能输出正确的逻辑值而此时信号 cnt1 的值在时钟的驱动下一次次被任务 (2) 驱动的共用变量 cnt_temp 覆盖。 可见任务在两次并发调用中共用存储空间导致信号相互间产生了影响。 其他描述不变只在上述 task 声明时加入关键字 automatic如下所以。 task automatic test_flag ;此时仿真结果如下。 en_cnt 为高时任务 (1) 中信号 cnt1 能输出正确的逻辑值任务 (2) 中信号 cnt2 的值为 X en_cnt 为低时任务 (2) 中信号 cnt2 能输出正确的逻辑值任务 (1) 中信号 cnt1 的值为 X 可见任务在两次并发调用中因为存储空间相互独立信号间并没有产生影响。
http://www.w-s-a.com/news/498783/

相关文章:

  • 宁夏网站建设怎么样互联网 网站设计
  • 成都关键词seo推广平台手机端关键词排名优化软件
  • 学做软件的网站卡盟平台
  • 网站构建建设案例展示关于做服饰网站的首页
  • 如何建设网站论坛凡科建站手机版登录
  • 建设银行门户网站惠州公司网站建设价格
  • 用python开发网站网站如何取消验证码
  • 公司做企业网站互联网建网站
  • 建网站需要的费用公司注册后怎么做网站
  • 宣传电脑的网站开发运动网站建设教程
  • 网站建设公司都会有哪些花销做网站公司商丘
  • 网站风格有哪些软件定制和开发
  • 公司网络维护具体做什么河南网站推广优化公司哪家好
  • 中学生制作的网站常平哪里有招计算机网站开发的
  • 原创网站模版苏州响应式网站建设
  • 做海报在哪个网站可以找素材网址申请注册方法
  • 网站建设分哪些类别别人做的网站不能用
  • 做网站网站会怎么样全国高校校园网站联盟建设
  • 整站下载器 做网站地图地产项目网站设计
  • 创意设计网站公司手机wap网站建设多少钱
  • 甘肃省第八建设集团公司网站seo高级优化方法
  • 精美的商城网站介绍最多人用的wordpress子主题
  • 检察门户网站建设情况俄外长抵达北京
  • 老电脑做网站服务器网站在线留言如何做
  • 南宁广告公司网站建设小程序源码破解
  • 沛县做网站xlec网站建设开发方式包括哪些方面
  • 山西网站建设 哪家好四川城乡和建设厅网站
  • 有瀑布流的网站小型商城网站
  • 百石网怎么做网站二次开发软件
  • 网站域名是什么东西制作网页哪家好