- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
verilog及fpga学习考试必备经典程序二
目录1.加法计数器中的进程22.任务举例23.测试程序34.函数45.用函数和 case 语句描述的编码器 (不含优先顺序)46.阶乘运算函数57.测试程序68.顺序执行模块 169.顺序执行模块 2710. 并行执行模块 1711. 并行执行模块 2812. 调用门元件实现的 4 选 1 MUX813. 用 case 语句描述的 4 选 1 MUX914. 行为描述方式实现的 4 位计数器915. 数据流方式描述的 4 选 1 MUX1016. 用条件运算符描述的 4 选 1 MUX1017. 门级结构描述的 2 选 1MUX1018. 行为描述的 2 选 1MUX1019. 数据流描述的 2 选 1MUX1120. 调用门元件实现的 1 位半加器1121. 数据流方式描述的 1 位半加器1122. 采用行为描述的 1 位半加器1223. 采用行为描述的 1 位半加器1224. 调用门元件实现的 1 位全加器1325. 数据流描述的 1 位全加器1326. 1 位全加器1327. 行为描述的 1 位全加器1328. 混合描述的 1 位全加器1429. 结构描述的 4 位级连全加器1530. 数据流描述的 4 位全加器1531. 行为描述的 4 位全加器1511. 加法计数器中的进程module count(data,clk,reset,load,cout,qout); output cout;output[3:0] qout; reg[3:0] qout; input[3:0] data; input clk,reset,load;always @(posedge clk)//进程 1,always 过程块beginif (!reset)qout= 4h00;//同步清 0,低电平有效else if (load)qout= data;//同步预置elseqout=qout + 1;//加法计数endassign cout=(qout==4hf)?1:0;//进程 2,用持续赋值产生进位信号endmodule2. 任务举例module alutask(code,a,b,c);input[1:0] code;input[3:0] a,b;output[4:0] c;reg[4:0] c;task my_and;//任务定义,注意无端口列表input[3:0] a,b;//a,b,out 名称的作用域范围为 task 任务内部output[4:0] out;integer i;begin2for(i=3;i=0;i=i-1)out[i]=a[i]b[i]; //按位与 endendtaskalways@(code or a or b) begincase(code)2b00: my_and(a,b,c);/*调用任务 my_and,需注意端口列表的顺序应与任务定义中的一致, 这里的 a,b,c 分别对应任务定义中的 a,b,out */2b01: c=a|b;//或2b10: c=a-b;//相减2b11: c=a+b;//相加endcaseendendmodule3. 测试程序`include alutask.vmodule alu_tp;reg[3:0] a,b;reg[1:0] code;wire[4:0] c;parameter DELY = 100;alutask ADD(code,a,b,c);//调用被测试模块initial begincode=4d0; a= 4b0000; b= 4b1111;#DELYcode=4d0; a= 4b0111; b= 4b1101;#DELYcode=4d1; a= 4b0001; b= 4b0011;3#DELYcode=4d2; a= 4b1001; b= 4b0011;#DELYcode=4d3; a= 4b0011; b= 4b0001;#DELYcode=4d3; a= 4b0111; b= 4b1001;#DELY$finish;endinitial $monitor($time,,,code=%b a=%b b=%b c=%b, code,a,b,c); endmodule4. 函数function[7:0] get0; input[7:0] x; reg[7:0] count; integer i;begin count=0;for (i=0;i=7;i=i+1)if (x[i]=1b0) count=count+1; get0=count;end endfunction5. 用函数和 case 语句描述的编码器 (不含优先顺序)module code_83(din,dout); input[7:0] din;output[2:0] dout;function[2
文档评论(0)