文档详情

Verilog及FPGA学习考试必备经典程序(二).pdf

发布:2017-12-07约1.33万字共16页下载文档
文本预览下载声明
目录 1. 加法计数器中的进程2 2. 任务举例2 3. 测试程序3 4. 函数 4 5. 用函数和 case 语句描述的编码器 (不含优先顺序)4 6. 阶乘运算函数5 7. 测试程序6 8. 顺序执行模块 1 6 9. 顺序执行模块 2 7 10. 并行执行模块 1 7 11. 并行执行模块 2 8 12. 调用门元件实现的 4 选 1 MUX 8 13. 用 case 语句描述的 4 选 1 MUX 9 14. 行为描述方式实现的 4 位计数器 9 15. 数据流方式描述的 4 选 1 MUX 10 16. 用条件运算符描述的 4 选 1 MUX 10 17. 门级结构描述的2 选 1MUX 10 18. 行为描述的 2 选 1MUX 10 19. 数据流描述的 2 选 1MUX 11 20. 调用门元件实现的 1 位半加器 11 21. 数据流方式描述的 1 位半加器 11 22. 采用行为描述的 1 位半加器 12 23. 采用行为描述的 1 位半加器 12 24. 调用门元件实现的 1 位全加器 13 25. 数据流描述的 1 位全加器 13 26. 1 位全加器 13 27. 行为描述的 1 位全加器 13 28. 混合描述的 1 位全加器 14 29. 结构描述的 4 位级连全加器 15 30. 数据流描述的 4 位全加器 15 31. 行为描述的 4 位全加器 15 1 1. 加法计数器中的进程 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 过程块 begin if (!reset) qout= 4h00; //同步清0 ,低电平有效 else if (load) qout= data; //同步预置 else qout=qout + 1; //加法计数 end assign cout=(qout==4hf)?1:0; //进程 2 ,用持续赋值产生进位信号 endmodule 2. 任务举例 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; begin 2 for(i=3;i=0;i=i-1) out[i]=a[i]b[i]; //按位与 end endtask always@(code or a or b) begin case(code) 2b00: my_and(a,b,c); /*调用任务 my_and ,需注意端口列表的顺序应与任务定义中的一致,
显示全部
相似文档