资源描述:
《Verilog_冒泡排序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、深圳大学实验报告课程名称:Verilog数字系统设计实验名称:四个8位2进制输入数据的冒泡排序学院:信息工程学院专业:电子信息工程班级:2010级电子2班组号:指导教师:报告人:学号:实验时间:2012年11月6日星期二实验地点南区N413实验报告提交时间:2012.11.11实验要求:1、掌握任务在Verilog模块设计中的应用;2、学会在电平敏感列表的always中使用拼接操作、任务和阻塞赋值等语句,并生成复杂组合逻辑的高级方法;3、掌握利用有限状态机实现一般时序逻辑分析的方法;4、掌握用Verilog编写可综合
2、的有限状态机的标准模版;掌握用Verilog编写状态机模块的测试文件的一般方法。实验内容:1、设计一个功能相同的模块,该模块能完成四个8位2进制输入数据的冒泡排序。假设8位数据是按照时钟节拍串行输入的,要求用时钟触发任务的执行法,每个时钟周期完成一次数据交换的操作。2、使用纯组合逻辑实现四个8位2进制输入数据的冒泡排序。实验代码:A.Verilog程序代码_时钟触发moduleRank(clk,x_input,ra0,rb0,rc0,rd0,ra1,rb1,rc1,rd1);inputclk;reg[3:0]state
3、;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;parameterIDLE0='d0,IDLE1='d1,IDLE2='d2,IDLE3='d3,A='d4,B='d5,C='d6,D='d7,E='d8;always@(posedgeclk)casex(state)IDLE0:begin{va}={x_input};stat
4、e<=IDLE1;endIDLE1:begin{vb}={x_input};state<=IDLE2;endIDLE2:begin{vc}={x_input};state<=IDLE3;endIDLE3:begin{vd}={x_input};state<=A;{ra0,rb0,rc0,rd0}={va,vb,vc,vd};endA:beginsort2(va,vc);state<=B;endB:beginsort2(vb,vd);state<=C;endC:beginsort2(va,vb);state<=D;end
5、D:beginsort2(vc,vd);state<=E;endE:beginsort2(vb,vc);{ra1,rb1,rc1,rd1}={va,vb,vc,vd};state<=IDLE0;enddefault:state<=IDLE0;endcasetasksort2;inout[7:0]x,y;reg[7:0]tmp;if(x>y)begintmp=x;x=y;y=tmp;endendtaskendmoduleA.Verilog测试代码_时钟触发moduleTest;//Inputsregclk;reg[7:0
6、]x_input;//Outputswire[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;//InstantiatetheUnitUnderTest(UUT)Rankuut(.clk(clk),.x_input(x_input),.ra0(ra0),.rc0(rc0),.rb0(rb0),.rd0(rd0),.ra1(ra1),.rb1(rb1),.rc1(rc1),
7、.rd1(rd1));always#10clk=~clk;always@(posedgeclk)x_input={$random}%256;//保证随机数不大于8位initialbegin//InitializeInputsclk=0;x_input=0;#100$stop;endendmodule仿真波形RTL级仿真:综合后门级仿真:B.Verilog程序代码_纯组合逻辑moduleRank(ra,rb,rc,rd,a,b,c,d);input[7:0]a,b,c,d;output[7:0]ra,rb,rc,rd;r
8、eg[7:0]ra,rb,rc,rd;reg[7:0]va,vb,vc,vd;always@(aorborcord)begin{va,vb,vc,vd}={a,b,c,d};sort2(va,vc);sort2(vb,vd);sort2(va,vb);sort2(vc,vd);sort2(vb,vc);{ra,rb,rc,rd}=