北航verilog上机实验报告

更新时间:2023-12-01 14:56:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Verilog上机实验报告

北 京 航 空 航 天 大 学

Verilog上机实验报告

1

Verilog上机实验报告

目录

实验一 简单的组合逻辑设计 ......................................................................................... 5 一、 二、 三、 四、 五、 六、 七、

实验目的 ................................................................................................................... 5 实验内容 ................................................................................................................... 5 对任务的理解 ............................................................................................................ 5 实现思路 ................................................................................................................... 5 代码 .......................................................................................................................... 6 仿真波形 ................................................................................................................... 7 总结及对波形的说明................................................................................................. 7

实验二 简单分频时序逻辑电路的设计 .......................................................................... 8 一、 二、 三、 四、 五、 六、 七、

实验目的 ................................................................................................................... 8 实验内容 ................................................................................................................... 8 对任务的理解 ............................................................................................................ 8 实现思路 ................................................................................................................... 8 代码 .......................................................................................................................... 8 仿真波形 ................................................................................................................... 9 总结及对波形的说明................................................................................................. 9

实验三 利用条件语句实现记数分频时序电路 ............................................................. 14 一、 二、 三、 四、 五、 六、 七、

实验目的 ................................................................................................................. 14 实验内容 ................................................................................................................. 14 对任务的理解 .......................................................................................................... 14 实现思路 ................................................................................................................. 14 代码 ........................................................................................................................ 14 仿真波形 ................................................................................................................. 16 总结及对波形的说明............................................................................................... 16

实验四 阻塞赋值与非阻塞赋值的区别 ........................................................................ 18 一、 二、 三、 四、 五、

实验目的 ................................................................................................................. 18 实验内容 ................................................................................................................. 18 对任务的理解 .......................................................................................................... 18 实现思路 ................................................................................................................. 18 代码 ........................................................................................................................ 18

2

Verilog上机实验报告

六、 仿真波形 ................................................................................................................. 20 七、 总结及对波形的说明............................................................................................... 20 实验五 用ALWAYS块实现比较复杂的组合逻辑电路 ................................................... 22 一、 二、 三、 四、 五、 六、 七、

实验目的 ................................................................................................................. 22 实验内容 ................................................................................................................. 22 对任务的理解 .......................................................................................................... 22 实现思路 ................................................................................................................. 22 代码 ........................................................................................................................ 22 仿真波形 ................................................................................................................. 25 总结及对波形的说明............................................................................................... 25

实验六 在VERILOG HDL中使用函数 ............................................................................ 26 一、 二、 三、 四、 五、 六、 七、

实验目的 ................................................................................................................. 26 实验内容 ................................................................................................................. 26 对任务的理解 .......................................................................................................... 26 实现思路 ................................................................................................................. 26 代码 ........................................................................................................................ 26 仿真波形 ................................................................................................................. 28 总结及对波形的说明............................................................................................... 28

实验七 在VERILOG HDL中使用任务(TASK) ............................................................. 30 一、 二、 三、 四、 五、 六、 七、

实验目的 ................................................................................................................. 30 实验内容 ................................................................................................................. 30 对任务的理解 .......................................................................................................... 30 实现思路 ................................................................................................................. 30 代码 ........................................................................................................................ 30 仿真波形 ................................................................................................................. 34 总结及对波形的说明............................................................................................... 34

实验八 利用有限状态机进行时序逻辑的设计 ............................................................. 35 一、 二、 三、 四、 五、 六、 七、

实验目的 ................................................................................................................. 35 实验内容 ................................................................................................................. 35 对任务的理解 .......................................................................................................... 35 实现思路 ................................................................................................................. 35 代码 ........................................................................................................................ 36 仿真波形 ................................................................................................................. 38 总结及对波形的说明............................................................................................... 38

3

Verilog上机实验报告

选做实验一 帧同步器设计 .............................................................................................. 39 一.实验内容 .................................................................................................................... 39 二.实现思路 .................................................................................................................... 41 三.代码 ............................................................................................................................ 41 四.仿真结果 .................................................................................................................... 48 选做实验四 数字去噪器设计 ........................................................................................... 49 一.实验内容 .................................................................................................................... 49 二.实现思路 .................................................................................................................... 50 三.代码 ............................................................................................................................ 50 四.仿真结果 .................................................................................................................... 52

4

Verilog上机实验报告

实验一 简单的组合逻辑设计

一、 实验目的

1.

2. 3. 4.

掌握基本组合逻辑电路的实现方法;

初步了解两种基本组合逻辑电路的生成方法; 学习测试模块的编写;

通过综合和布局布线了解不同层次仿真的物理意义。

二、 实验内容

设计一个字节(8位)的比较器。

要求:比较两个字节的大小,如a[7:0]大于b[7:0],则输出高电平,否则输出低电平;并改写测试模型,使其能进行比较全面的测试。观察RTL级仿真、综合后门级仿真和布局布线后仿真有什么不同,并说明这些不同的原因。从文件系统中查阅自动生成的compare.vm,compare.vo文件和compare.v作比较,说出它们的不同点和相同点。

三、 对任务的理解

本题就是一个很简单的比较电路。对两个8位的输入数据的大小进行比较,并且输出比较结果

四、 实现思路

1. 首先这个比较器应当有3个对外的端口,分别是:两个8位数据的输入端口,

一个比较结果的输出端口。

2. 由于比较器的输出结果是随着输入变化立即变化的,因此这是一个组合逻辑的

电路。主程序很容易实现。

3. 测试模块要产生随机的两个8位输入数据,因此利用系统任务$random来实现。

通过一个时钟,每隔一段时间产生两个新的随机数。

5

Verilog上机实验报告

`timescale 1ns/1ns `define clk_cycle 50 module t; reg clk,rst; wire out;

always #`clk_cycle clk=~clk; initial begin

clk=0; rst=1; #10 rst=0; #110 rst=1;

#600000 $stop; end

div_ex m(.rst(rst),.clk(clk),.out(out)); endmodule

六、 仿真波形

七、 总结及对波形的说明

1. 实验结论

从波形中可以看出每个周期中高电平持续时间为10000ns=10us,低电平持续时间为40000ns=40us。满足题目的要求。

16

Verilog上机实验报告

2. 实验总结

本次实验是Verilog上机的第三个实验,由于有了实验二中的经验,所以只需要把实验二中的程序稍加修改即可得到结果。

但是在实验的过程中我依然遇到了一些阻碍。

首先是由于数量级关系没有搞对,使得计数器的位数出了问题。其次是在测试文件中调用了$stop,而自己预设的stop的延迟时间太短,导致输出时钟为低电平(实际上时间还不到一个周期),令自己误以为自己的程序本身有逻辑问题,从而耽误了很多时间。

在看输出波形的长度的时候,可以用modelsim中的cursor功能,用光标来显示波形持续的长度。

17

Verilog上机实验报告

实验四 阻塞赋值与非阻塞赋值的区别

一、 实验目的

1. 通过实验,掌握阻塞赋值与非阻塞赋值的概念和区别;

2. 了解非阻塞和阻塞赋值的不同使用场合;

3. 学习测试模块的编写、综合和不同层次的仿真。

二、 实验内容

在blocking模块中按如下两种写法,仿真与综合的结果会有什么样的变化?作出仿真波形,分析综合结果

(1) always @(posedge clk)

begin c=b; b=a; end

(2) always @(posedge clk) b=a;

always @(posedge clk) c=b;

三、 对任务的理解

通过给定的两段代码理解所谓阻塞赋值与非阻塞赋值的区别。

四、 实现思路

按照给定的代码进行试验,并查看实验结果。

五、 代码

1. 主程序

---------------------------------------文件名 blocking.v--------------------------------------------

module blocking(clk, a,b,c); output [3:0] b,c; input [3:0] a;

18

Verilog上机实验报告

input clk; reg [3:0] b,c;

always @(posedge clk) begin c = b; b = a;

$display(\ end

endmodule

---------------------------------------文件名 blocking_ex.v-------------------------------------------- module blocking_ex(clk, a,b,c); output [3:0] b,c; input [3:0] a; input clk; reg [3:0] b,c;

always @(posedge clk) b = a;

always @(posedge clk) begin c = b;

$display(\ end

endmodule

2. 测试模块

----------------------------------------文件名 div_ex_tb.v----------------------------------- `timescale 1ns/100ps `include\

`include\

module compareTop; wire [3:0] b1,c1,b2,c2; reg [3:0] a; reg clk;

initial begin clk=0;

forever #50 clk=~clk; end

19

Verilog上机实验报告

initial begin a=4'h3;

$display(\ #100 a=4'h7;

$display(\ #100 a=4'hf;

$display(\ #100 a=4'ha;

$display(\ #100 a=4'h2;

$display(\ #100

$display(\ $stop; end

blocking_ex(clk,a,b2,c2);

blocking blocking(clk,a,b1,c1); endmodule

六、 仿真波形

七、 总结及对波形的说明

1. 实验结论

从波形中可以看出这两种写法都相当于例题中的非阻塞赋值。

第一个写法中,先用b对c赋值,再用a对b赋值。相当于先把b的值进行了向下传递,在对b进行改写。因此b的前一个值没有被抹掉,被传递了下来。

第二个写法中,阻塞赋值分别被放在不同的always块总。理论上来说所有的always块都是并行执行的,因此这种写法应当与阻塞赋值是相当的。但是结果中可以看出这种写法却与非阻塞赋值的结果相同。这就说明由于计算机本身的局限性,在仿真的时候,

20

Verilog上机实验报告

这些always块执行的先后顺序是随机的。因此可能会出现不一致的结果。这就是Verilog中的竞争冒险现象。在进行程序设计的时候,我们应当避免这种写法的出现。也就是说,应当在时序逻辑中避免阻塞赋值!

2. 实验总结

本次实验是Verilog上机的第四个实验,通过对例题的重现以及对思考题的实际仿真,我对阻塞和非阻塞赋值有了进一步的理解,从物理实现性上进一步明白了这两种赋值方式所代表的电路连接方式。

在进行Verilog编程的时候,我们应当对赋值方式养成良好的习惯,即在组合逻辑中使用阻塞赋值方式,在时序逻辑中使用非阻塞赋值方式。

21

Verilog上机实验报告

实验五 用always块实现比较复杂的组合逻辑电路

一、 实验目的

1.

2. 3. 4.

掌握用always实现较大组合逻辑电路的方法;

进一步了解assign与always两种组合电路实现方法的区别和注意点; 学习测试模块中随机数的产生和应用; 学习综合不同层次的仿真,并比较结果。

二、 实验内容

运用always块设计一个8路数据选择器。要求:每路输入数据与输出数据均为4位2进制数,当选择开关(至少3位)或输入数据发生变化时,输出数据也相应地变化。

三、 对任务的理解

本题要求完成一个8路数据选择器。通过选择开关选通需要输出数据的端口,输入的数据从这个被选中的端口中输出。

四、 实现思路

1. 首先这个数据选择器应当有10个对外的端口,分别是:8个4位的输入端口;

一个3位的选择开关端口;一个结果的输出端口。

2. 由于题目中要求选择开关或输入数据发生变化时,输出数据相应发生变化,因

此这是一个组合逻辑的电路。

3. 测试模块要产生随机的8个4位输入数据,因此利用系统任务$random来实现。

通过一个时钟信号,每隔一段时间产生新的随机数。

五、 代码

1. 主程序

---------------------------------------文件名 selector.v--------------------------------------------

module selector(in0,in1,in2,in3,in4,in5,in6,in7,out,ctrl); input [3:0] in0,in1,in2,in3,in4,in5,in6,in7; input [2:0] ctrl;

22

Verilog上机实验报告

output [3:0] out; reg [3:0] out;

always @(*) begin

case(ctrl)

3'b000: out=in0; 3'b001: out=in1; 3'b010: out=in2; 3'b011: out=in3; 3'b100: out=in4; 3'b101: out=in5; 3'b110: out=in6; 3'b111: out=in7;

default: out=4'bx; endcase end

endmodule

2. 测试模块

----------------------------------------文件名 selector_tb.v----------------------------------- `timescale 1ns/1ns

module t;

reg[3:0] in0,in1,in2,in3,in4,in5,in6,in7; reg[2:0] ctrl; wire[3:0] out; reg clk;

initial

begin clk=0;

ctrl={$random}%8; in0={$random}; in1={$random};

23

Verilog上机实验报告

in2={$random}; in3={$random}; in4={$random}; in5={$random}; in6={$random}; in7={$random}; #10000 $stop; end

always #50 clk=~clk;

always @(posedge clk) begin

ctrl={$random}%8; in0={$random}; in1={$random}; in2={$random}; in3={$random}; in4={$random}; in5={$random}; in6={$random}; in7={$random}; end

selector m(in0,in1,in2,in3,in4,in5,in6,in7,out,ctrl); endmodule

24

Verilog上机实验报告

六、 仿真波形

七、 总结及对波形的说明

1. 实验结论

从波形中可以看出

在第一个时钟周期中crtl=100=4,此时out=in4=1101。 在第二个时钟周期中ctrl=101=5,此时out=in5=0110。

在第三个时钟周期中ctrl不变,但in5发生了变化,此时out=in5=1000。 可见,随着ctrl和输入的变化,out都发生了相应的变化,满足题目的要求。

2. 实验总结

本次实验是Verilog上机的第五个实验,是一个较为复杂的组合逻辑电路。在实现这样的电路的时候,一般考虑条件分支语句(如if..else或者case等)来实现相应的功能。

25

Verilog上机实验报告

实验六 在Verilog HDL中使用函数

一、 实验目的

1. 了解函数的定义和在模块设计中的使用;

2. 了解函数的可综合性问题;

3. 了解许多综合器不能综合复杂的算术运算。

二、 实验内容

设计一个带控制端的逻辑运算电路,分别完成正整数的平方、立方和最大数为5的阶乘的运算,要求可综合。编写测试模块,并给出各种层次的仿真波形,比较它们的不同。

三、 对任务的理解

本题要求完成一个带控制端的逻辑运算电路。当控制端的控制信号不同的时候,输出与输入之间的函数关系不同,分别为平方、立方和阶乘。

四、 实现思路

1. 首先这个逻辑运算电路应当有3个对外的端口,分别是:一个数据输入端口;

一个2位的功能控制端口;一个结果的输出端口。

2. 由于阶乘的最大数为5,因此输入最大数据为5,输出最大数据为5!=120设输

入数据为3位,输出数据为8位。

3. 通过条件分置于句来选择不同的函数功能。而每个函数功能分别编写来提高程

序的可读性和可移植性。

4. 测试模块产生随机的输入数据以及控制信号,因此利用系统任务$random来实

现。通过一个时钟信号,每隔一段时间产生新的随机数。

五、 代码

1. 主程序

---------------------------------------文件名 func.v--------------------------------------------

module func(in,out,s);

26

Verilog上机实验报告

input [2:0] in; output [7:0] out; input [1:0] s;

reg [7:0] out;

always @ (*) begin case (s)

2'b00: out<=square(in); 2'b01: out<=cube(in); 2'b10: out<=factorial(in); default: out<=out; endcase end

function [7:0] square; input [2:0] a;

assign square=a*a; endfunction

function [7:0] cube; input [2:0] b;

assign cube=b*b*b; endfunction

function [7:0] factorial; input [2:0] c; reg [2:0] index; begin

factorial=c?1:0;

for(index =2;index<=c;index=index+1) factorial=index*factorial; end

endfunction

endmodule

2. 测试模块

----------------------------------------文件名 func_tb.v----------------------------------- `timescale 1ns/1ns

27

Verilog上机实验报告

module t; reg [2:0] in; reg [1:0] s; wire[7:0] out;

reg clk;

initial begin in=0; s=0; clk=0;

#10000 $stop; end

always #50 clk=~clk; always @ (posedge clk) begin

in<={$random}%8; s<={$random}%4; end

func m (in,out,s);

endmodule

六、 仿真波形

七、 总结及对波形的说明

1. 实验结论

从波形中可以看出

当s=00时,in=101=5时,out=00011001=25。即完成了平方的功能。out与前一个

28

Verilog上机实验报告

时刻的out相同,即输出维持不变。

当s=01时,in=100=4时,out=01000000=64,;in=001=1时,out=00000001=1。即完成了立方的功能。

当s=10时,in=101=5,out=01111000=120。即完成了阶乘的功能。 当s=11时,out与前一个时刻的out相同,即输出维持不变。

可见,随着s和输入的变化,out都发生了相应的变化,满足题目的要求。

2. 实验总结

本次实验是Verilog上机的第五个实验,是一个较为复杂的组合逻辑电路。其中运用了函数来实现一些模块化的功能,增强了程序的可读性和可移植性。在今后进行Verilog程序设计的时候,也应当多用这样的写法。

3. Verilog 可综合的总结

1) 所有综合工具都支持的结构:always,assign,begin,end,case,wire,tri,aupply0,

supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter。

2) 所有综合工具都不支持的结构:time,defparam,$finish,fork,join,initial,

delays,UDP,wait。

3) 有些工具支持有些工具不支持的结构:casex,casez,wand,triand,wor,trior,

real,disable,forever,arrays,memories,repeat,task,while。

29

Verilog上机实验报告

实验七 在Verilog HDL中使用任务(task)

一、 实验目的

1. 掌握任务在Verilog模块设计中的使用;

2. 学会在点评敏感列表的always中使用拼接操作、任务和阻塞赋值等语句,并生成复杂组合逻辑的高级方法。

二、 实验内容

用两种不同方法设计一个功能相同的模块,该模块能完成四个8位2进制数据的冒泡排序。第一种,模仿上面的例子用纯组合逻辑实现;第二种,假设8位数据是按照时钟节拍串行输入的,要求时钟触发任务的执行法,每个时钟周期完成一次数据交换的操作。比较两种不同方法的运行速度和消耗资源的不同。

三、 对任务的理解

本题要求实现一个数据的冒泡排序。要求两种方法实现。分别是并行输入数据的情况和串行输入数据的情况。

四、 实现思路

1. 第一种方法需要8个对外端口,分别为4个8位的输入端口和4个8位的输出

端口。第二种方法需要7个对外端口,分别是1个8位数据输入端口,1个时钟,1个复位端口和4个8位输出端口。

2. 两种方法中,都要把输入的4个数据储存在内部的四个存储器中,对这四个存

储器的数据进行冒泡排序,再将这四个储存器中的已经排序完成的数据输出。不同之处在于第一种方法直接将输入的数据储存起来。而第二种方法则每进来一个数据进行一次储存和一次排序。

3. 冒泡排序的算法可以通过比较和数据对换位置实现。其中数据对换位置的功能

多次重复使用,可以由一个任务来完成。

五、 代码

1. 主程序

30

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

Verilog上机实验报告

state<=C; end else

begin

state<=IDLE; end

default:state=IDLE; endcase endmodule

5. 测试模块

----------------------------------------文件名 check_tb.v----------------------------------- `timescale 1ns/1ns

module t;

reg clk,rst,in;

wire z;

always #10 clk= ~clk; always @ (posedge clk) in = {$random}%2; initial begin clk=0; rst=1; #2 rst=0; #30 rst=1;

#10000 $stop; end

seqdet m(in,z,clk,rst); endmodule

37

Verilog上机实验报告

六、 仿真波形

七、 总结及对波形的说明

1. 实验结论

从波形中可以看出,当出现4个或4个以上连1的时候,输出1,否则输出为0。符合题目要求。

2. 实验总结

本次实验是Verilog上机的第八个实验,利用有限状态机完成了指定序列的检测工作。重点在于搞清状态转移的过程。

38

Verilog上机实验报告

选做实验一 帧同步器设计

一.实验内容

39

Verilog上机实验报告

40

Verilog上机实验报告

二.实现思路

实验的主体是一个状态机,在“SEARCH”, ”CHECK”, “LOCK”, “PROTECT”四个不同的状态间切换。其功能实际上可以分解为两个主要部分:实现帧同步字的匹配和并行输入—串行输出的转换。这两个功能都需要一个寄存器(数组)用来存储近n位的输入值rx_data,使用二进制的除法进行右移和简单的循环就可以实现匹配功能。而设定一个计数变量,每到8时进行一次输出,即赋值语句if(((i_CHECK%8)==0)&&(i_CHECK<=frame_len)) frame_data={search_save[0],search_save[1],search_save[2],search_save[3],search_save[4],search_save[5],search_save[6],search_save[7]}; 即可实现串入并出转换。 功能的主体实在包含在SEARCH和CHECK状态中,另外两个状态与CHECK状态类似,代码基本相同。

三.代码

--------------------------------------------主程序frame_syn.v----------------------------------------------------- module

frame_syn(rst,sysclk,rx_en,rx_clk,rx_data,frame_syn_word,frame_syn_len,frame_len,frame_syn_m,frame_syn_l2,frame_syn_l3,frame_data,syn_status);

input rst,sysclk,rx_en,rx_data,rx_clk; input [7:0]frame_syn_word;

//input [1:0]frame_syn_word_len; input [20:0]frame_len; input [1:0]frame_syn_m;

input [2:0]frame_syn_l2,frame_syn_l3; input [10:0]frame_syn_len; output [7:0]frame_data; output [1:0]syn_status; //output frame_data_wen; reg [1:0]syn_status; reg [7:0]frame_data; reg [10:0]i_SEARCH=0; reg [10:0]i_CHECK=0; reg [10:0]same=0; reg [10:0]li2=0; reg [10:0]li3=0; reg [10:0]match=0;

reg [31:0]search_save=0;

parameter SEARCH='d0,CHECK='d1,LOCK='d2,PROTECT='d3;

always @(posedge sysclk) begin if(!rst)

41

Verilog上机实验报告

begin

frame_data=0;

syn_status<=SEARCH; end else

casex(syn_status) SEARCH: if(rx_en) begin

if(i_SEARCH

search_save[i_SEARCH]=rx_data; i_SEARCH=i_SEARCH+1; end else begin

search_save=search_save/2;

search_save[frame_syn_len-1]=rx_data;

for(same=0;same

if(search_save[same]==frame_syn_word[same]) match=match+1;

end

if((match==(frame_syn_len-frame_syn_m))|(match==frame_syn_len))

begin

syn_status<=CHECK; match=0; end else

begin

syn_status<=SEARCH; match=0; end end end

else syn_status<=SEARCH; CHECK:

if(rx_en) begin

search_save=search_save/2;

search_save[frame_syn_len-1]=rx_data; i_CHECK=i_CHECK+1;

42

Verilog上机实验报告

if(((i_CHECK%8)==0)&&(i_CHECK<=frame_len))

frame_data={search_save[0],search_save[1],search_save[2],search_save[3],search_save[4],search_save[5],search_save[6],search_save[7]};

if(i_CHECK>frame_len) begin

if(i_CHECK==frame_len+frame_syn_len) begin for(same=0;same

begin

if(search_save[same]==frame_syn_word[same]) match=match+1;

end search_save[i_SEARCH]=rx_data;

if((match==(frame_syn_len-frame_syn_m))|(match==frame_syn_len))

begin

match=0; li2=li2+1; i_CHECK=0;

if(li2>frame_syn_l2) begin

syn_status<=LOCK; li2=0;

i_CHECK=0; end end else

begin

match=0;

syn_status<=SEARCH; li2=0;

i_CHECK=0; end end end end

else syn_status<=CHECK; LOCK:

if(rx_en) begin

search_save=search_save/2;

search_save[frame_syn_len-1]=rx_data;

43

Verilog上机实验报告

i_CHECK=i_CHECK+1;

if(((i_CHECK%8)==0)&&(i_CHECK<=frame_len))

frame_data={search_save[0],search_save[1],search_save[2],search_save[3],search_save[4],search_save[5],search_save[6],search_save[7]};

if(i_CHECK>frame_len) begin

if(i_CHECK==frame_len+frame_syn_len) begin for(same=0;same

begin

if(search_save[same]==frame_syn_word[same]) match=match+1;

end

if((match==(frame_syn_len-frame_syn_m))|(match==frame_syn_len))

begin

match=0;

syn_status<=LOCK; i_CHECK=0; end else

begin

match=0;

syn_status<=PROTECT; i_CHECK=0; end end end end

else syn_status<=LOCK; PROTECT: if(rx_en) begin

search_save=search_save/2;

search_save[frame_syn_len-1]=rx_data; i_CHECK=i_CHECK+1;

if(((i_CHECK%8)==0)&&(i_CHECK<=frame_len))

frame_data={search_save[0],search_save[1],search_save[2],search_save[3],search_save[4],search_save[5],search_save[6],search_save[7]};

if(i_CHECK>frame_len)

44

Verilog上机实验报告

begin

if(i_CHECK==frame_len+frame_syn_len) begin for(same=0;same

begin

if(search_save[same]==frame_syn_word[same]) match=match+1;

end

if((match==(frame_syn_len-frame_syn_m))|(match==frame_syn_len))

begin

match=0; li3=li3+1; i_CHECK=0;

if(li3>frame_syn_l3) begin

syn_status<=LOCK; li3=0;

i_CHECK=0; end end else

begin

match=0;

syn_status<=SEARCH; li3=0;

i_CHECK=0; end end end end else begin

syn_status<=PROTECT; end endcase end endmodule

45

本文来源:https://www.bwwdw.com/article/012t.html

Top