Verilog上机实验报告
repeat(50) begin
#100 a={$random}%6; b={$random}%6; c={$random}%6; d={$random}%6; end
#100 $stop; end
sort m(.a(a),.b(b),.c(c),.d(d),.ra(ra),.rb(rb),.rc(rc),.rd(rd));
endmodule
------------------------------方法一----------文件名 sort_ex_tb.v----------------------------------- `timescale 1ns/100ps `define clk_cycle 50
module t_ex; reg [7:0] a;
wire [7:0] ra,rb,rc,rd; reg clk,reset;
always #`clk_cycle clk= ~clk;
initial begin a=0; clk=0; reset =1;
#10 reset=0; #110 reset=1;
repeat(50) begin
#100 a={$random}%6; end
#100 $stop; end
sort_ex sort_ex(clk,reset,ra,rb,rc,rd,a);
endmodule
33
Verilog上机实验报告
六、 仿真波形
方法一:
方法二:
七、 总结及对波形的说明
1. 方法一实验结论
从波形中可以看出,每次输入一组a,b,c,d,都会输出一组ra,rb,rc,rd。并且有ra 2. 方法二实验结论 从波形中可以看出,每次比较完成需要四个时钟周期来把四个数据都输入。在每个时钟周期中都进行了一次比较,每次都把最大的数移到rd的位置上。在四个时钟周期完成后,有ra 3. 实验总结 本次实验是Verilog上机的第七个实验,分别完成了对并行输入数据和串行输入数据的冒泡排序以及并行输出。从效率上来说方法一的效率比较高,因为只需要进行一次比较,需要时间短。但是方法二完成了串行转并行的数据变换工作,比方法一的功能更强。 34 Verilog上机实验报告 实验八 利用有限状态机进行时序逻辑的设计 一、 实验目的 1. 掌握利用有限状态机实现一般时序逻辑分析的方法; 2. 掌握用Verilog编写可综合的有限状态机的标准模板; 3. 掌握用Verilog编写状态机模块的测试文件的一般方法 二、 实验内容 设计一个串行数据检测器。要求是:连续4个或以上为1时输出为1,其他输入情况下为0.编写测试模块对设计的模块进行各种层次的仿真,并观察波形,编写实验报告。 三、 对任务的理解 本题要求实现一个串行数据检测器。也就是利用一个有限状态机,每连续出现一个1状态跳转一次。当连续4个或4个以上1时,锁定在某个状态,并且输出1. 四、 实现思路 用有限状态机完成这个任务,其流程图如下 in=1&rst=1IDLE in=1&rst=1Ain=1&rst=1Bin=1&rst=1Cin=1&rst=1D 35 Verilog上机实验报告 五、 代码 4. 主程序 ---------------------------------------文件名 check.v-------------------------------------------- module seqdet(in,z,clk,rst); input in,clk,rst; output z; reg[2:0] state; wire z; parameter IDLE='d0, A='d1, B='d2, C='d3; assign z=((state==C)&&(in==1))? 1:0; always @ (posedge clk) if(!rst) begin state<=IDLE; end else casex(state) IDLE: if(in==1) begin state<=A; end A: if(in==1) begin state<=B; end else begin state<=IDLE; end B: if(in==1) begin state<=C; end else begin state<=IDLE; end C: if(in==1) begin 36
相关推荐: