文档库 最新最全的文档下载
当前位置:文档库 › 帧格式头数据检测_VerilogHDL有限状态机

帧格式头数据检测_VerilogHDL有限状态机

帧格式头数据检测_VerilogHDL有限状态机
帧格式头数据检测_VerilogHDL有限状态机

题目1:串行通讯中,经常要检测数据包的开始标志,例如:USB 数据包的起

始数据是8‘b00101010设计一个电路,能够检测串行数据流中的特殊数据串,并在数据串有效时,给出相应的指示信号;

(1)RTL Code

/*信号定义与说明

Clk:同步时钟

rstb: 异步复位信号,低电平复位

up_down: 加/减计数方向控制信号,1为加计数

Din:串行数据输入

pat_det: 检测结果输出

*/

`timescale 1ns/1ns

module serialdata(din,clk,rstb,pat_det);

input clk,rstb;

input din;

output pat_det;

parameter S0='d0,S1='d1,S2='d2,S3='d3,S4='d4,S5='d5,S6='d6,IDLE='d7;

reg[2:0] state;

assign pat_det=(state= =S6&&din= =0)?1:0;

always@(posedge clk or negedge rstb)

begin

if(!rstb) state<=IDLE;

else

begin

case(state)

IDLE:

begin

if(din==0) state<=S0;

else state<=IDLE;

end

S0:

begin

if(din==0) state<=S1;

else state<=IDLE;

end

S1:

begin

if(din==1) state<=S2;

else state<=S1;

end

S2:

begin

if(din==0) state<=S3;

else state<=IDLE;

end

S3:

begin

if(din==1) state<=S4;

else state<=S1;

end

S4:

begin

if(din==0) state<=S5;

else state<=IDLE;

end

S5:

begin

if(din==1) state<=S6;

else state<=S1;

end

S6: state<=IDLE;

default: state<=IDLE;

endcase

end

end

endmodule

(2)Test File

`timescale 1ns/1ns

`include "serialdata.v"

module tb_serialdata;

reg clk,rstb;

wire din;

wire pat_det;

reg[31:0] data;

assign din=data[31];

serialdata t1(din,clk,rstb,pat_det);

initial begin

clk=1'b0;

rstb=1'b0;

data=32'b1001_0010_1010_1100_1010_1000_1010_1010;

#10 rstb=1'b1;

#640 $stop;

end

always@(posedge clk)

begin

data <={data[30:0],data[31]};

end

always #5 clk=~clk;

endmodule

(3)波形与说明

图示标注地方每个上升沿取得数据din,当检测到00101010之后输出pat_det 置为高电平。

整个32位串行输入数据1001_0010_1010_1100_1010_1000_1010_1010,总共640个时间单位stop,即32位输入数据跑两遍,共输出6个高电平脉冲,符合设计!

题目2:设计一个串行数据检测器,输入数据与时钟同步。要求是:输入连续5

个或5 个以上的1 时输出为1,其他输入情况下输出为0

(1)RTL Code

/*信号定义与说明

clk: 同步输入时钟

nreset: 复位信号,低电平有效

din: 串行数据输入

out:检测结果输出

*/

`timescale 1ns/1ns

module serialfive1(out,din,clk,nreset);

input din;

input clk,nreset;

output out;

parameter M0='d0,M1='d1,M2='d2,M3='d3,M4='d4,IDLE='d5;

reg[2:0] state;

assign out=(state==M4&&din==1)?1:0;

always @(posedge clk)

begin

if(!nreset) state<=IDLE;

else

case(state)

IDLE:

begin

if(din==1) state <= M0;

else state <= IDLE;

end

M0:

begin

if(din==1) state <= M1;

else state <= IDLE;

end

M1:

begin

if(din==1) state <= M2;

else state <= IDLE;

end

M2:

begin

if(din==1) state <= M3;

else state <= IDLE;

end

M3:

begin

if(din==1) state <= M4;

else state <= IDLE;

end

M4:

begin

if(din==1) state <= M4;

else state <= IDLE;

end

default: state <= IDLE;

endcase

end

endmodule

(2)Test File

`include "serialfive1.v"

`timescale 1ns/1ns

module tb_serialfive1;

reg clk,nreset;

wire din,out;

reg[15:0] data;

assign din=data[15];

serialfive1 t1(out,din,clk,nreset);

initial

begin

clk = 1'b0;

nreset = 1'b0;

data = 'b0111_1110_0101_1111;

#8 nreset = 1'b1;

#320 $stop;

end

always #5 clk=~clk;

always @(posedge clk)

data = {data[14:0],data[15]};

endmodule

(3)波形与说明

如图所示,输入16位串行数据0111_1110_0101_1111。在320个时间单位跑两遍,一共输出4个高电平脉冲输出,其中一个是连续6个1,所以其维持2个clk,如图示,满足设计要求!

HDLC数据帧的格式

1、HDLC数据帧格式: 起始标志要传输的数据块结束标志 011111100011011000010110011011101111110 包括起始和终止标志的信息块称为HDLC的“数据帧”。起始和终止标志采用相同的帧间隔符“01111110”,即在HDLC规程中,帧与帧之间用“01111110” 所分隔,“帧”构成了通信双方交换的最小单位。 2、一些术语: HDLC来源于IBM公司的SDLC,因此也采用了一些SDLC的术语和说明。

说明: (1)F :帧间隔模式:“01111110”——同步符号、 帧之间的填充字符。 011111101111100001111000101011111101010100111111101010 01111110 (2)A :地址字段:通信对方的地址 (3)C :控制字段:用于区分帧的类型(数据帧、监控帧、无编号帧) (4)I :信息字段:携带高层用户数据,可以是任意的二进制位串; (5)FCS :校验码:对A 、C 、I 字段进行循环校验。 g(x)=x 16 +x 12 +x 5 +1 (CCITT 和ISO 使用); g(x)=x 16 +x 15 +x 2 +1 (IBM 的SDLC 使用)。 由于帧中至少含有A (地址)、C (控制)和FCS (帧校验序列)字段,因此整个帧长度应大于32位。 5、“0”比特插入法 为了保证帧间隔符“01111110”的唯一性和帧内数据的透明性,保证A (地址字段)、C (控制字段)、I (信息字段)、FCS (帧校验序列)中不出现01111110的位模式,HDLC 采用了‘0’位插入法。 发送端:发送“01111110”后,开始数据发送,并在数据发送过程中,检查发送的位流,一旦发现连续的5个‘1’,则自动在其后插(附)上1个‘0’,并继续传输后继的位流;数据发送结束后,追加帧间隔符“01111110”。 接收端: 执行相反的动作:一旦识别出帧间隔符“01111110”之后的位流不是“01111110”,则启动接收过程;若识别出连续5个‘1’和1个‘0’,则自动丢弃该‘0’,以恢复原来的位流;若识别出连续的6个‘1’,表示数据结束,该数据帧接收完成。 6、HDLC 控制帧格式: 说明: (1)信息帧(I ):用于传输用户数据,控制字段的第0位规定为‘0’;

MAC帧格式分析与应用

IEEE 802.3 MAC帧格式的分析与应用 学生姓名:学号:指导老师: 摘要本文介绍了IEEE802.3标准中规定的两种以太网帧格式,基本帧格式和扩展帧格式。得出以下结论,IEEE802.3-2005基本帧格式,主要由前导、SDF、DA、SA、Length/Type、DATA、Pad、FCS等8部分组成,还可增添4字节的扩展部分,其总长度为64-1518字节。扩展帧格式在基本帧格式上增加了“802.1Q TAG”类型和TCI字段,可实现对用户优先级和VLAN加标帧的控制。 关键词 IEEE 802.3 基本帧格式扩展帧格式 Abstract This essay introduces two different kinds of Ethernet MAC frame,the basic and Q-tagged. We concluded that,the basic MAC frame of IEEE 802.3-2005,whose length is 64-1518 bytes, are mainly consisted of by 8 parts,including Preabmle, SDF,DA,SA,Length/Type,Data,Pad,FCS, and additional part,sized 4 bytes. While, the Q-tagged frame adds another two parts on the bisas of the basic one, that is ‘802.1Q TAQ’ and ‘TCI’, whose fuction are dividually to control the VLAN Tagged Frame and the user’s priority. Keyword IEEE 802.3 Basic Frame Q-tagged Frame

实验四 有限状态机设计(2学时)

实验四有限状态机设计(2学时) 实验内容一: 状态机是指用输入信号和电路状态(状态变量)的逻辑函数去描述时序逻辑电路功能的方法,也叫时序机。有限状态机是指在设计电路中加入一定的限制条件,一般用来实现数字系统设计中的控制部分。 根据时序电路输出信号的特点可将时序电路划为Mealy 型和Moore 型两种。Moore型电路中,输出信号仅仅取决于存储电路的状态。Mealy型电路中,输出信号不仅取决于存储电路的状态,而且还取决于输入变量。图1是某Mealy型电路的状态转换图,图中圆圈内的S0、S1等代表电路的状态,状态转换箭头旁斜杠“/”上边的数字代表输入信号,斜杠“/”下边的数字代表输出信号。假设电路的当前状态为S0,当输入信号为0时,电路的下一个状态仍为S0,输出信号为0;当输入信号为1时,电路的下一个状态为S1,输出为1。 图1 Mealy状态机 下面的程序中使用两个进程来描述该状态机。第一个进程负责状态转化,在CP上升沿到达时,当前状态(PresetState)向下一个状态(NextState)的转换;第二个进程负责检测输入信号(DIN)和当前状态(PresetState)的值,并由CASE-WHEN 语句决定输出信号(OP)和下一个状态值(NextState)的值。请补充下图中虚线“…”部分省略掉的程序,然后对完整程序进行编译,并用Tools->Netlist Views->State Machine Viewer和RTL Viewer工具查看该状态机的状态图和RTL顶层图。

… … 实验内容二: 论文《基于VHDL的一个简单Mealy状态机》中设计了一个Mealy状态机用来检测数据流“1101010”,用以验证状态机在数据检测上的应用。请在读懂文中程序的基础上,在Quartus Ⅱ软件中通过编译仿真得到状态图和波形图,仿真中输入波形的设置应能体现该状态机的用途。 实验报告: 本次实验占用两个学时,请于12周周四(5月12日)上课时交实验报告。对于实验内容一,报告的内容应重在程序的完善上,对于实验内容二,报告的内容应重在对论文中源程序的分析和理解,以及仿真的波形图上。

HART命令帧格式

前段时间做了一部分有线HART的解析,整理了一下基本的帧结构,在此做个笔记 HART帧结构: [cpp]view plain copy 1.|-------------------------------------------------------------------| 2.| PREAMBLE[5..20] | START | ADDR | COM | BCNT | STATUS | DATA | CHK | 3.|-------------------------------------------------------------------| 4. 5. 6.FF FF FF FF FF 82 A6 06 B2 BF 01 0F 00 21 1. PREAMBLE 引导码, 一般是5..20个0xFF, 他是一组同步传输的同步信号, 用以保证信息的同步. 在开始通讯的时候,使用的是20个FF引导码, 从机应答0信号时将告之主机他“希望”接收几个字节的引导码, 另外主机也可以用59号命令告诉从机应答时应用几位引导码. 2. START(1Byte) 起始字节, 说明结构为“长”还是“短”, 消息源, 是否是“突发”模式消息. [cpp]view plain copy 1.0x02: 主机到从机的短帧 2.0x82: 主机到从机的长帧 3.0x06:从机到主机的短帧 4.0x86: 从机到主机的长帧 5.0x01: 突发模式的短帧 6.0x81: 突发模式的长帧 一般设备进行通讯接收到2个FF字节后, 就表示数据位的接收已经同步, 就将侦听起始位. 3. ADDR(1/5Bytes)

有限状态机设计

有限状态机设计 实验报告 一.实验题目 有机状态机设计 二.实验目的 掌握有机状态机设计的基本方法。 三.实验远离 状态机是指用输入信号和电路状态(状态变量)的逻辑函数去描述时序逻辑电路功能的方法,也叫时序机。有限状态机是指在设计电路中加入一定的限制条件,一般用来实现数字系统设计中的控制部分。 四.实验内容

实验内容一: 状态机是指用输入信号和电路状态(状态变量)的逻辑函数去描述时序逻辑电路功能的方法,也叫时序机。有限状态机是指在设计电路中加入一定的限制条件,一般用来实现数字系统设计中的控制部分。 根据时序电路输出信号的特点可将时序电路划为Mealy 型和Moore 型两种。Moore型电路中,输出信号仅仅取决于存储电路的状态。Mealy型电路中,输出信号不仅取决于存储电路的状态,而且还取决于输入变量。图1是某Mealy型电路的状态转换图,图中圆圈内的S0、S1等代表电路的状态,状态转换箭头旁斜杠“/”上边的数字代表输入信号,斜杠“/”下边的数字代表输出信号。假设电路的当前状态为S0,当输入信号为0时,电路的下一个状态仍为S0,输出信号为0;当输入信号为1时,电路的下一个状态为S1,输出为1。 图1 Mealy状态机 下面的程序中使用两个进程来描述该状态机。第一个进程负责状态转化,在CP上升沿到达时,当前状态(PresetState)向下一个状态(NextState)的转换;第二个进程负责检测输入信号(DIN)和当前状态(PresetState)的值,并由CASE-WHEN 语句决定输出信号(OP)和下一个状态值(NextState)的值。请补充下图中虚线“…”部分省略掉的程序,然后对完整程序进行编译,并用Tools->Netlist Views->State Machine Viewer和RTL Viewer工具查看该状态机的状态转移图和RTL原理图。

CAN报文的传送和帧结构

CAN 报文的传送和帧结构 9.2.2 CAN 报文的传送和帧结构 在进行数据传送时,发出报文的节点为该报文的发送器。该节点在总线空闲或丢失仲裁前恒为发送器,如果一个节点不是报文发送器,并且总线不处于空闲状态,则该节点为接收器。 构成一帧的帧起始、仲裁场、控制场、数据场和CRC 序列均借助位填充规则进行编码。当发送器在发送的位流中检测到5位连续的相同数值时,将自动在实际发送的位流中插入一个补码位。而数据帧和远程帧的其余位场则采用固定格式,不进行填充,出错帧和超载帧同样是固定格式。报文中的位流是按照非归零(NZR )码方法编码的,因此一个完整的位电平要么是显性,要么是隐性。 在“隐性”状态下, CAN 总线输出差分电压 =— 近似为零, 在“显性”状态下,以大于最小阈值的差分电压表示,如图9.2所示。在总线空闲或“隐性”位期间,发送“隐性”状态。在“显性”位期间,“隐性”状态改写为“显性”状态。 图9.2总线上的位电平表示 CAN 有两种不同的帧格式,不同之处为识别符场的长度不同:具有11位识别符的帧称之为标准帧;而含有29位识别符的帧为扩展帧。CAN 报文有以下4个不同的帧类型: ● 数据帧:数据帧将数据从发送器传输到接收器。 ● 远程帧:总线节点发出远程帧,请求发送具有同一识别符的数据帧。 ● 错误帧:任何节点检测到总线错误就发出错误帧。 ● 过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。 数据帧和远程帧可以使用标准帧及扩展帧两种格式。它们用一个帧间空间与前面的帧分 隔。 1. 数据帧 数据帧由7个不同的位场组成:帧起始(Start of Frame )、仲裁场(Arbitration Frame )、控制场(Control Frame )、数据场(Data Frame )、CRC 场(CRC Frame )、应答场(ACK Frame )、帧结尾(End of Frame )。数据场的长度为0到8位。报文的数据帧一般结构如图9.3所示。 diff V CANH V CANL V

有限状态机设计

实验七有限状态机设计 一、实验目的 1、掌握利用有限状态机实现一般时序逻辑分析的方法; 2、掌握用VHDL或Verilog编写可综合的有限状态机的标准模板; 3、掌握用VHDL或Verilog编写序列检测器以及其他复杂逻辑电路的设计; 二、实验内容 1、用MOORE型状态机设计一个具有双向步进电动机控制实验:该控制电路有三个输入信号:clk时钟信号,clr复位信号,dir方向控制信号。输出信号为phase[3..0]用来控制步进电机的动作。当dir=1时要求phase[3..0]按照“0001”,“0010”,“0100”,“1000”的顺序变化;当dir=0时要求phase[3..0]按照“0001”,“1000”,“0100”,“0010”的顺序变化。 2、设计一个简单的状态机,功能是检测一个5位的二进制序列“10010”。 3、设计一个串行数据检测器,要求是:连续4个或4个以上为1时输出为1,其他输入情况为0。(选做) 4、根据状态图,写出对应于结构图b,分别由主控组合进程和主控时序进程组成的VERILOG 有限状态机描述。(选做) 三、实验步骤 实验一: 1、建立工程

2、创建Verilog HDL文件 3、输入程序代码并保存 module moore1(clk,clr,dir,phase); input clk,clr,dir; output[3:0] phase; reg[3:0] phase; reg[1:0] state; parameter s0='b00,s1='b01,s2='b10,s3='b11; always@(posedge clk) begin if(clr)begin phase<='b0000;state<=s0;end else begin case(state) s0:if(dir) begin phase<='b0010;state<=s1;end else begin phase<='b1000;state<=s3;end s1:if(dir) begin phase<='b0100;state<=s2;end else begin phase<='b0001;state<=s0;end s2:if(dir) begin phase<='b1000;state<=s3;end

实验3 分析MAC帧格式分析

实验3 分析MAC帧格式 3.1 实验目的 1.了解MAC帧首部的格式; 2.理解MAC帧固定部分的各字段含义; 3.根据MAC帧的内容确定是单播,广播。 3.2 实验设备 Winpcap、Wireshark等软件工具 3.3 相关背景 1.据包捕获的原理:为了进行数据包,网卡必须被设置为混杂模式。在现实的网络环境中,存在着许多共享式的以太网络。这些以太网是通过Hub 连接起来的总线网络。在这种拓扑结构的网络中,任何两台计算机进行通信的时候,它们之间交换的报文全部会通过Hub进行转发,而Hub以广播的方式进行转发,网络中所有的计算机都会收到这个报文,不过只有目的机器会进行后续处理,而其它机器简单的将报文丢弃。目的机器是指自身MAC 地址与消息中指定的目的MAC 地址相匹配的计算机。网络监听的主要原理就是利用这些原本要被丢弃的报文,对它们进行全面的分析,这样就可以得到整个网络中信息的现状。 2.Tcpdump的简单介绍:Tcpdump是Unix平台下的捕获数据包的一个架构。Tcpdump最初有美国加利福尼亚大学的伯克利分校洛仑兹实验室的Van Jcaobson、Craig Leres和Steve McCanne共同开发完成,它可以收集网上的IP数据包文,并用来分析网络可能存在的问题。现在,Tcpdump已被移植到几乎所有的UNIX系统上,如:HP-UX、SCO UNIX、SGI Irix、SunOS、Mach、Linux和FreeBSD等等。更为重要的是Tcpdump是一个公开源代码和输出文件格式的软件,我们可以在Tcpdunp的基础上进行改进,加入辅助分析的功能,增强其网络分析能力。(详细信息可以参看相关的资料)。 3.Winpcap的简单介绍:WinPcap是由意大利Fulvio Risso和Loris Degioanni等人提出并实现的应用于Win32 平台的数据包捕获与分析的一种软件包,包括内核级的数据包监听设备驱动程序、低级动态链接库(Packet.dll)和高级系统无关库(Winpcap.dll),其基本结构如图3-1所示:

利用有限状态机进行时序逻辑的设计

实验三利用有限状态机进行时序逻辑的设计 1.实验目的: (1)掌握利用有限状态机实现一般时序逻辑分析的方法; (2)掌握用Verilog编写可综合的有限状态机的标准模板; (3)掌握用Verilog编写状态机模块的测试文件的一般方法。 (4)在数字电路中已经学习过通过建立有限状态机来进行数字逻辑的设计,而在VerilogHDL硬件描述语言中,这种设计方法得到进一步的发展。通过Verilog HDL提供的语句,可以直观的设计出更为复杂的时序逻辑的电路。关于有限状态机的设计方法在教材中已经作了较为详细的阐述。 2.实验环境 PC机一台,安装有quartusII13.0软件以及modulsim软件 3.实验内容 设计一个简单的状态机,功能是检测一个5位二进制序列“10010”。考虑到序列重叠的可能。有限状态机共提供8个状态(包括初始状态IDLE). 4.实验步骤 1)源程序: module seqdet(x,z,clk,rst,state); input x,clk ,rst ; output z; output [2:0] state ; reg[2:0] state ; wire z; parameter IDLE='d0, A='d1, B='d2, C='d3, D='d4, E='d5, F='d6, G='d7; assign z=(state == E && x==0)?1:0; always @(posedge clk) if(!rst) begin state <= IDLE; end else casex(state) IDLE:if(x==1) begin state <= A; end A: if(x==0) begin state <= B; end B: if(x==0) begin state <= C; end else begin state <= F; end C: if(x==1) begin state <= D; end else begin

以太网数据帧的格式分析比较

一、 以太网数据帧的格式分析 大家都知道我们目前的局域网大多数是以太网,但以太网有多种标准,其数据帧有多种格式,恐怕有许多人不是太清楚,本文的目的就是通过帧格式和Sniffer捕捉的数据包解码来区别它们。 以太网这个术语一般是指数字设备公司(Digital Equipment)、英特尔公司(Intel)和施乐公司(Xerox)在1982年联合公布的一个标准(实际上它是第二版本,第一版本早在1972年就在施乐公司帕洛阿尔托研究中心PARC里产生了)。它是目前TCP/IP网络采用的主要的局域网技术。它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collision Detection)。它的速率为10 Mb/s,地址为48 bit。 1985年,IEEE(电子电气工程师协会) 802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,802.5针对令牌环网络。这三者的共同特性由802.2标准来定义,那就是802网络共有的逻辑链路控制(LLC)。不幸的是,802.2和802.3定义了一个与以太网不同的帧格式,加上1983年Novell为其Netware 开发的私有帧,这些给以太网造成了一定的混乱,也给我们学习以太网带来了一定的影响。 1、通用基础 注:* VLAN Tag帧和Gigabit Jumbo帧可能会超过这个限制值 图1-1 图1-1中,数据链路层头(Header)是数据链路层的控制信息的长度不是固定的,根据

数据帧格式

习题一 1.局域网络标准对应OSI模型的_____层. A..下2层 B. 下3层 C. 下4层. D. 上3层 2.局域网总线/树拓扑的多点介质传输系统中,要使多个站点共享单个数据通道,需要特别考虑解决_(1)___和__(2)___这两个问题..例如采用50欧同轴电缆作为传输介质并构成总线拓扑的网络系统,可使用基带技术传输数字信号,总线上——⑶----,总线两端加上终端匹配器用以———(4)---。 (1)A. 数据帧格式 B. 介质访问控制方法 C.通信协议类型 D. 信道分配方案 (2)A. 信号平衡 B. 站点之间性能匹配 C.数据编码方案 D. 介质传输性能 (3)A. 整个带宽由单个信号占用 B. 整个带宽被分成多路数据数据信道 C. 可传输视频或音频信号 D. 数据只能单向传输 (4)A. 防止信号衰减, B. 增强抗干扰能力 C.降低介质损耗 D. 阻止信号反射 3.1980年2月,电器和电子工程协会成立了IEEE 802委员会,当时个人计算机联网刚刚兴起,该委员会针对局域网提出了一系列标准,称做IEEE802标准,该标准很快成为国际标准,现在局域网的连接都是采用该标准。 问题1:按照IEEE802标准,局域网体系结构分成哪几部分? 问题2:在哪个部分进行地址识别? 问题3:局域网一般采用哪两种访问控制方式?这两种访问控制方式一般选用什么样的拓扑结构? 4.需求分析时要考虑操作系统的是———。 A.用户要求,B,应用需求,C,计算机平台需求,D,网络需求 5.客户机/服务器(简称C/S)模式属于以——(1)——为中心的网络计算模式,其工作过程是客户端——(2)——,服务器——(3——,并——(4)——,它的主要优点是——(5)——。 (1),A大型、小型机,B,服务器,C,通信,D,交换, (2),A,向服务器发出命令请求,B,向服务器发出查询请求, C,向网络发送查询请求,D,在本机上发出自我请求, (3),A,接收请求并告诉请求再发一次, B,接收请求,进入中断服务程序,打印本次请求内容, C,响应请求并在服务器端执行相应请求服务, D,把响应请求传回到请求端并执行, (4),A,把执行结果在打印服务器上输出, B,把显示内容送回客户机 C,把整个数据库内容送回客户机, D,把执行结果送回客户机,

实验八:利用有限状态机进行时序逻辑的设计

实验八:利用有限状态机进行时序逻辑的设计一:利用有限状态机进行时序逻辑的设计的源程序: module seqdet(x,z,clk,rst,state); input x,clk,rst; output z; output[2:0] state; reg[2:0] state; wire z; parameter IDLE='d0, A='d1, B='d2, C='d3, D='d4, E='d5, F='d6, G='d7; assign z = ( state==E && x==0 )? 1 : 0; always @(posedge clk) if(!rst) begin state <= IDLE; end else casex(state) IDLE : if(x==1) begin state <= A; end A: if(x==0) begin state <= B; end B: if(x==0) begin state <= C; end else begin state <= F; end C: if(x==1) begin state <= D; end else begin

state <= G; end D: if(x==0) begin state <= E; end else begin state <= A; end E: if(x==0) begin state <= C; end else begin state <= A; end F: if(x==1) begin state <= A; end else begin state <= B; end G: if(x==1) begin state <= F; end default:state=IDLE; endcase endmodule 二:利用有限状态机进行时序逻辑的设计的测试代码:`timescale 1ns/1ns `include "./seqdet.v" module seqdet_Top; reg clk,rst; reg[23:0] data; wire[2:0] state; wire z,x; assign x=data[23]; always #10 clk = ~clk;

modbus数据帧格式

寄存器地址是任意指定的。 参数设置及数据读取采用标准的MODBUS-RTU模式完成。 一、首先是设定系统的通讯速率:地址01,设定0x0002地址寄存器为读写寄存器可以设置对应的速率01=2400,N,8,1 02=4800,N,8,1 03=9600,N,8,1 ,04=19200,8,N,1 1、读取内部寄存器(通讯速率)命令 发送:01 03 00 02 00 01 CRC 01 03 00 02 00 01 CRC 系统地址功能码寄存器地址寄存器数量软件自动产生的CRC16校验位 回答:01 03 02 00 03 CRC 01 03 02 00 03 CRC 系统地址功能码数据段的字节数量数据段数据CRC16校验位数据段数据为0003H = 3 表示系统速率是9600 2、修改内部寄存器(通讯速率)命令【把 9600(代码03)改为19200(代码04)】 发送:01 06 00 02 00 04 CRC 01 06 00 02 00 04 CRC 系统地址功能码寄存器地址修改的新值软件自动产生的CRC16校验位回答:F8 3F 3F 6A FF (因速率已改变,所以回答的数据是无效的) 验证是否成功(把主机的串口波特率改为 19200 后) 发送:01 03 00 02 00 01 CRC 01 03 00 02 00 01 CRC 系统地址功能码寄存器地址寄存器数量软件自动产生的CRC16校验位回答:01 03 02 00 04 CRC

01 03 02 00 04 CRC 系统地址功能码数据段的字节数量数据段数据CRC16校验位数据段数据为0004H = 4 表示系统新速率是19200(04) 二、校时数据帧格式(地址02,设定0x0003 0004 0005 0006 寄存器放置时间 参数从低到高,格式:2011:02:12 18:36:25) 将十进制2011:02:12 18:36:25(07DB:020C 0018 2419) 写入寄存器: 写时间数据帧02 06 00 03 00 04 24 19 02 0C 07 BD CRC 02 06 00 03 00 04 24 19 00 18 02 0C 07 BD CRC 系统地址功能码寄存器地址寄存器数量数据段数据0003 0004 0005 0006 软件自动产生的 CRC16校验位应答:02 03 08 24 19 0018 020C 07BD CRC 02 06 08 24 19 00 18 020C 07BD CRC 系统地址功能码数据段的字节数量数据段数据0003 0004 0005 0006 CRC16校验位 三、采样频率数据帧格式(地址为03,0x0007寄存器放置采样频率参数0-300 ,(0000-012C)) 发送:03 06 00 00 07 01 2C CRC 03 06 00 07 01 2C CRC 系统地址功能码寄存器地址修改的新值软件自动产生的CRC16校验位 回答:03 06 02 01 2C CRC (表示修改成功) 03 06 02 01 2C CRC 系统地址功能码数据段的字节数量数据段数据CRC16校验位 四、启动采样点设定数据帧格式要求(地址为04,寄存器为0x0008,采用频率 设置范围是0032-2710,50Hz-10000Hz)

常见规约帧格式一览表:

常见规约帧格式一览表 一.C dt规约 1.帧格式 同步字6B+控制字6B+信息字1(6B)….+信息字n(6B) 2.同步字(6B) EB 90 EB 90 EB 90 3.控制字(6B) 控制字节1B+帧类别码1B+信息字数1B+源站地址1B+目的站地址1B+校验码1B (1)控制字节 (2)帧类别码 (3)信息字数 (4)源站地址 (5)目的站地址 (6)校验码,从控制字节到目的站址的CRC校验码 4. 信息字(6B) 功能码+信息+校验码 二.101规约 1.固定帧长帧格式

2 3.控制域:

4.数据单元 类型地址+可变结构限定词+传送原因+应用服务数据单元公共地址+信息地址+信息元素集……. 三.103规约 103规约帧格式基本与101格式相同,只是在可变帧结构中链路用户数据部分不同,103规约应用服务数据单元的定义如下: 类型标识+可变结构限定词+传送原因+应用服务数据单元公共地址+功能类型+信息序号+信息元素集+信息体时标(可选择) 此数据单元在妆容范围内共有31种,其中ASDU6用于下行时间同步,ASDU7用于下行总查询,ASDU10用于下行通用分类数据,ASDU20用于下行一般命令,ASDU21用于下行通用分类命令,ASDU24用于下行扰动数据传输命令,ASDU25用于下行拢动数据舆的认可。 ASDU10用于上行通用分类数据,ASDU1用于上行带时标的报文,ASDU2用于上行具有相对时间的带时标的报文,ASDU6用于上行时间同步 ASDU1信息元素: DPI(一个字节的低两位)+二进制时间(4B) ASDU2信息元素: DPI+相对时间+故障序号+二进制时间(4B)+附加信息 ASDU10信息元素: 返回信息标识符+通用分类数据集数目+组号+条目号+描述类别+数据类型+数据宽度(规定几个字节一个数据)+数据的数目(最后一位为后续状态位)+标识数据(数据宽度*数目) 四.V4.1规约 下发查询命令: 表址1B+55H+标志地址低字节1B+标志高字节1B+数据长度1B+累加校验和1B +结束码0DH 其中数据长度决定了电度表要上送的内容,没有的以00H补充上送,对应的顺序依次为:正向有功,总感性无功,反向有功,总容性无功……总共有41项数据,各项数据的标志地址和字节数及单位已作规定 查询应答命令: 表址+命令标志字+标志地址低+标志地址高+数据长度+数据1低字节…数据1高字节+数据N低字节+数据N高字节+累加校验和+结束码 广播对时命令: BC BC 年的后两位月日时分累加校验和0D 此命令无反馈 五.部颁规约(DL/T645-1997) 1.帧格式

网络通信的数据包(帧)的结构及原理

网络通信的数据包(帧)的结构及原理 在网络通信中,”包”(Packet)和”帧”(Frame)的概念相同,均指通信中的一个数据块.对于具体某种通信网络,一般使用术语”帧”.一种网络的帧格式可能与另一种网络不同,通常使用术语”包”来指一般意义的帧.串行通信的数据格式有面向字符型的数据格式,如单同步、双同步、外同步;也有面向比特型的数据格式,这以帧为单位传输,每帧由六个部分组成,分别是标志区、地址区、控制区、信息区、帧校验区和标志区. ?串行通信协议属于ISO国际参考标准的第三层,数据链路层.数据链路层必须使用物理层提供给它的服务.物理层所做的工作是接收个一个原始的比特流,并准备把它交给目的地.不能保证这个比特流无差错.所接收的比特的数量也许少于,也许等于或多于所传递的比特的数量,它们具有不同的值.一直要上到数据链路层才能进行检测,如果需要的话,纠正错误.对于数据层,通常的方法是把比特流分成离散的帧,并对每一帧计算出校验和…….当一帧到达目的地后重新计算校验和时,如果新算出的校验和不同于帧中所包括的值,数据链路层就知道出现差错了,从而会采取措施处理差错(即,丢弃坏帧,并发回一个差错报告). ?数据链路层的任务是在两个相邻接点间的线路上无差错地传送以帧为单位的数据.每一帧包括数据和必要的控制信息.人们发现,对于经常产生误码的实际链路,只要加上合适的控制规程,就可以使通信变为比较可靠的.如IBM公司推出了着名的体系结构SNA,在SNA的数据链路规程采用了面向比特的规程SDLC,后来ISO把它修改后称为HDLC,译为高级数据链路控制.在INTERNET 中,用户与ISP(INTERNET服务提供者)之间的链路上使用得最多的协议就是SLIP和PPP. ?

常见报文格式帧结构

常见报文格式汇总 1.1Ethernet数据包格式(RFC894) 1、目的Mac的最高字节的第8位如果为1,表明此包是以太网组播/广播包,送给CPU处理。 2、将目的Mac和本端口的MAC进行比较,如果不一致就丢弃。 3、获取以太网类型字段Type/Length。 0x0800→IP 继续进行3层的IP包处理。 0x0806→ARP 送给CPU处理。 0x8035→RARP 送给CPU处理。 0x8863→PPPoE discovery stage 送给CPU处理。 0x8864→PPPoE session stage 继续进行PPP的2层包处理。 0x8100→VLAN 其它值当作未识别包类型而丢弃。 4、Tag帧。 Type:长度为2字节,取值为0x8100,表示此帧的类型为802.1Q Tag帧。 PRI:长度为3比特,可取0~7之间的值,表示帧的优先级,值越大优先级越高。该优先级主要为QoS差分服务提供参考依据(COS)。 VID(Vlan ID):长度12bits,可配置的VLAN ID取值范围为1~4094。通常vlan 0和vlan 4095预留,vlan1为缺省vlan,一般用于网管。 1.2PPP数据包格式 1、获取PPP包类型字段。 0x0021→IP 继续进行3层的IP包处理。 0x8021→IPCP 送给CPU处理。 0xC021→LCP 送给CPU处理。 0xc023→PAP 送给CPU处理。 0xc025→LQR 送给CPU处理。 0xc223→CHAP 送给CPU处理。 0x8023→OSICP 送给CPU处理。 0x0023→OSI 送给CPU处理。 其它值当作未识别包类型而丢弃。

PPP数据帧的格式

PPP数据帧的格式 [ 2007-5-17 11:43:00 ] PPP协议也许大家都听说过,可以说现在家里的ADSL都是通过PPP协议进行链路的搭建,今天就说说PPP到底是个啥东东。 想要了解PPP,个人认为有3个关键的知识点。 1、PPP数据帧的格式; 2、PPP的几种报文; 3、PPP的状态转移 首先说说的PPP数据帧的格式,因为PPP是链路层协议,所以我们将它的数据单位称为帧, 7E FF 03 7E 标志地址控制协议域信息域校验标志 1B 1B 1B 2B 缺省1500B 2B 1B 每一个PPP数据帧均是以一个标志字节起始和结束的,该字节为0x7E(这样很容易区分出每个PPP帧) 紧接在起始标志字节后的一个字节是地址域,该字节为0xFF。我们熟知网络是分层的,且对等层之间进行相互通信,而下层为上层提供服务。当对等层进行通信时首先需获知对方的地址,而对不同的网络,在数据链路层则表现为需要知道对方的MAC地址、X.121地址、ATM地址等;在网络层则表现为需要知道对方的IP地址、IPX地址等;而在传输层则需要知道对方的协议端口号。例如如果两个以太网上的主机希望能够通信的话,首先发送端需获知对端的MAC地址。但由于PPP协议是被运用在点对点的链路上的特殊性,它不像广播或多点访问的网络一样,因为点对点的链路就可以唯一标示对方,因此使用PPP协议互连的通信设备的两端无须知道对方的数据链路层地址,所以该字节已无任何意义,按照协议的规定将该字节填充为全1的广播地址。同地址域一样,PPP数据帧的控制域也没有实际意义,按照协议的规定通信双方将该字节的内容填充为0x03。(既然无意义,就可以随便赋值了吧,呵呵,只要大家都遵守一个标准就行)就PPP协议本身而言,我们最关心的内容应该是它的协议域和信息域。协议域可用来区分PPP数据帧中信息域所承载的数据报文的内容。协议域的内容必须依据ISO 3309的地址扩展机制所给出的规定。该机制规定协议域所填充的内容必须为奇数,也即是要求低字节的最低位为“1”,高字节的最低位为“0”。如果当发送端发送的PPP数据帧的协议域字段不符合上述规定,则接收端会认为此数据帧是不可识别的,那么接收端会向发送端发送一个Protocol-Reject报文,在该报文尾部将完整地填充被拒绝的报文。 信息域缺省时最大长度不能超过1500字节,其中包括填充域的内容,1500字节大小等于PPP协议中配置参数选项MRU(Maximum Receive Unit)的缺省值,在实际应用当中可根据实际需要进行信息域最大封装长度选项的协商。信息域如果不足1500字节时可被填充,但不是必须的,如果填充则需通信双方的两端能辨认出有用与无用的信息方可正常通信。 协议域和信息域是需要合在一起看的,目前主要用到的协议类型有LCP、NCP和普通的IP协议,而他们相对应的协议域字段则为0×C021、0×8021和

以太网数据帧的构成

计算机与通信工程学院实验报告

1、打开协议仿真编辑器,选择“工具”菜单中的“命令行”,出现命令提示符后输入: C:>ipconfig/all 2、观察运行结果,获得本机的主机名及以太网地址。 3、在地址本中找到本机的相关信息 练习二:编辑LLC信息帧并发送 1、打开协议仿真编辑器,在工具栏选择“新建”,建立一个以太网帧(也可以利用协议仿真编辑器打 开时默认建立的以太网帧进行编辑);此时在协议仿真编辑器的各部分会显示出该新帧的信息。 ⑴多帧编辑器中显示:新帧的序号(为1)、概要信息; ⑵协议树中显示以太网MAC层协议; ⑶单帧编辑器中显示新帧各字段的默认值; ⑷十六进制对照表中显示新帧对应的十六进制信息; 2、编辑以太网帧 在单帧编辑器中编辑该帧,见图1-4;具体步骤为: 图4 单帧编辑器中以太网帧示意图 ⑴填写“目的MAC地址”字段; 方法一:手工填写。 方法二:选择地址本某主机的MAC地址,双击自动添加。 ⑵填写“源MAC地址”字段,方法同上; 注意:仿真编辑器可以仿真本机发送的MAC帧,也可以仿真另一台主机发送MAC帧,所以,源MAC 地址字段可以填写本机MAC地址,也可以填写其他主机的MAC地址。但要注意协议分析器显示过滤器的设置,否则会捕获不到数据包。 ⑶填写“类型或长度”字段:可以填写0X0043;同时在LLC的DATA中填写0X0040个数据;例如: 在LLC的DATA中添入: AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDD; 注意:填写的类型或长度字段为十六进制数,填写的数值应等于LLC层首部与数据字段的长度和。 ⑷协议树中会显示LLC;其中的SSAP和DSAP是源和目的访问点,可以不变,采用仿真器给定的数值。 ⑸修改LLC的控制字段,最低位为零,表示信息帧。 3、单帧编辑器与十六进制对照表是联动的,观察十六进制对照表中该帧的信息;

802.3帧和EthernetII帧格式的区别

局域网包括:以太网、令牌环、光纤分布式数据接口FDDI。 IP数据报必须用数据链路层的报文和报尾封装后才能在物理媒介上发送。数据链路层的报文和报尾提供以下服务: 1. 定界帧彼此分开。每个帧的开始和结束位置被标出,其有效负载也与报头报尾分开。 2. 协议识别许多组织使用不同协议套件,如TCP/IP,IPX或AppleTalk,每种协议必须区分开。 3. 寻址为了共享以太网等局域网技术,必须指出源节点和目标节点。 4.比特级完整性检验每帧校验和形式检查比特级错误。 同一网段上的所有节点(通过路由器连在一起)必须使用相同的帧格式才能相互通信。 以太网发展: 最早:美国夏威夷大学ALOHA 9.6Kbit/s无线电发射系统,所有发射器共享同一频段,争用技术。1972年,施乐公司研制2.94Mbit/s网络,称作以太网,检测载波,先监听再发射。 1979年,DIX(Digital、Intel、Xerox)研制行业标准,10Mbit/s以太网,即Ethernet II。 1981年,IEEE Project802成立802.3 小组委员会,使10Mbit/s以太网成为国际标准。 1995年,IEEE批准了100Mbit/s以太网,称为快速以太网。 Etherne II 报头8 目标地址6 源地址6 以太类型2 有效负载46-1500 帧检验序列4 报头:8个字节,前7个0,1交替的字节(10101010)用来同步接收站,一个1010101011字节指出帧的开始位置。报头提供接收器同步和帧定界服务。 目标地址:6个字节,单播、多播或者广播。单播地址也叫个人、物理、硬件或MAC地址。广播地址全为1,0xFF FF FF FF。 源地址:6个字节。指出发送节点的单点广播地址。 以太类型:2个字节,用来指出以太网帧内所含的上层协议。即帧格式的协议标识符。对于IP报文来说,该字段值是0x0800。对于ARP信息来说,以太类型字段的值是0x0806。 有效负载:由一个上层协议的协议数据单元PDU构成。可以发送的最大有效负载是1500字节。由于以太网的冲突检测特性,有效负载至少是46个字节。如果上层协议数据单元长度少于46个字节,必须增补到46个字节。 帧检验序列:4个字节。验证比特完整性。 IEEE 802.3 根据IEEE802.2 和802.3标准创建的,由一个IEEE802.3报头和报尾以及一个802.2LLC报头组成。

modbus数据帧格式

寄存器地址是任意指定的。参数设置及数据读取采用标准 的MODBUS-RTU 模式完成。一、首先是设定系统的通讯 速率:地址01,设定0x0002地址寄存器为读写寄存器可以设置对应的速率01=2400,N,8,1 02=4800,N,8,1 03=9600,N,8,1 ,04=19200,8,N,1 1、读取内部寄存器(通讯速率)命令发送:01 03 00 02 00 01 CRC 01 03 00 02 00 01 CRC 系统地址功能码寄存器地址寄存器数量软件自动 产生的CRC16校验位回答:01 03 02 00 03 CRC 01 03 02 00 03 CRC 系统地址功能码数据段的字节数量数据段数据CRC16校验位数据段数据为0003H = 3 表示系统速率 是9600 2、修改内部寄存器(通讯速率)命令【把9600(代码03)改为19200(代码04)】发送:01 06 00 02 00 04 CRC 01 06 00 02 00 04 CRC 系统地址功能码寄存器地址修改的新值软件自动产生的CRC16校验位回答:F8 3F 3F 6A FF (因速率已改变,所以回答的数据是无效的)验证是否成功(把主机的串口波特率改为19200 后)发送:01 03 00 02 00 01 CRC 01 03 00 02 00 01 CRC 系统地址功能码寄存器地址寄存器数量软件自动产生的CRC16校验位回答:01 03 02 00 04 CRC 01 03 02 00 04 CRC 系统地址功能码数据段的字节数量数据段数据CRC16校验位数据 段数据为0004H = 4 表示系统新速率是19200(04)二、校时数据帧格式(地址02,设定0x0003 0004 0005 0006 寄

相关文档