- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2016年度精品--Verilog_冒泡排序.doc
深 圳 大 学 实 验 报 告
课程名称: 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
文档评论(0)