文档详情

2016年度精品--Verilog_冒泡排序.doc

发布:2018-06-20约1.79万字共35页下载文档
文本预览下载声明
深 圳 大 学 实 验 报 告 课程名称: Verilog数字系统设计 实验名称: 四个8位2进制输入数据的冒泡排序 学院: 信息工程学院 专业: 电子信息工程 班级: 2010级电子2班 组号: 指导教师: 报告人: 学号: 实验时间: 2012 年 11 月 6 日 星期 二 实验地点 南区N413 实验报告提交时间: 2012.11.11 实验要求: 掌握任务在Verilog模块设计中的应用; 学会在电平敏感列表的always中使用拼接操作、任务和阻塞赋值等语句,并生成复杂组合逻辑的高级方法; 掌握利用有限状态机实现一般时序逻辑分析的方法; 4、掌握用Verilog编写可综合的有限状态机的标准模版;掌握用Verilog编写状态机模块的测试文件的一般方法。 实验内容: 设计一个功能相同的模块,该模块能完成四个8位2进制输入数据的冒泡排序。假设8位数据是按照时钟节拍串行输入的,要求用时钟触发任务的执行法,每个时钟周期完成一次数据交换的操作。 2、使用纯组合逻辑实现四个8位2进制输入数据的冒泡排序。 实验代码: A.Verilog程序代码_时钟触发 module Rank(clk,x_input,ra0,rb0,rc0,rd0,ra1,rb1,rc1,rd1); input clk;reg[3:0] state; input [7:0] x_input; output[7:0] ra0,rb0,rc0,rd0,ra1,rb1,rc1,rd1; reg[7:0] va,vb,vc,vd; reg[7:0] ra0,rb0,rc0,rd0,ra1,rb1,rc1,rd1; parameter IDLE0=d0,IDLE1=d1,IDLE2=d2,IDLE3=d3,A=d4,B=d5,C=d6,D=d7,E=d8; always@(posedge clk) casex(state) IDLE0:begin {va}={x_input};state=IDLE1; end IDLE1:begin {vb}={x_input};state=IDLE2; end IDLE2:begin {vc}={x_input};state=IDLE3; end IDLE3:begin {vd}={x_input}; state=A; {ra0,rb0,rc0,rd0}={va,vb,vc,vd}; end A:begin sort2(va,vc);state=B; end B:begin sort2(vb,vd);state=C; end C:begin sort2(va,vb); state=D; end D:begin sort2(vc,vd);state=E; end E:begin sort2(vb,vc); {ra1,rb1,rc1,rd1}={va,vb,vc,vd}; state=IDLE0; end default:state=IDLE0; endcase task sort2; inout[7:0] x,y;reg[7:0] tmp; if(xy) begin tmp=x;x=y;y=tmp; end endtask endmodule A.Verilog测试代码_时钟触发 module Test; // Inputs reg clk; reg [7:0] x_input; // Outputs wire [7:0] ra0; wire [7:0] rb0; wire [7:0] rc0; wire [7:0] rd0; wire [7:0] ra1; wire [7:0] rb1; wire [7:0] rc1; wire [7:0] rd1; // Instantiate the Unit Under Test (UUT) Rank uut ( .clk(clk), .x
显示全部
相似文档