精华内容
下载资源
问答
  • 序列发生器

    2015-04-22 21:26:19
    用Verilog语言实现序列发生器,产生一段序列,供您用于实现别的程序。
  • M序列发生器

    2011-10-07 15:38:54
    M序列发生器 M序列发生器 M序列发生器
  • 10.序列发生器.pdf

    2020-07-11 16:27:57
    1010 1011序列发生器 使用74ls161d芯片与74ls151d芯片使用multisim软件设计1010 1011序列发生器 数电实验
  • m序列发生器是一种反馈移位型结构的电路,它由n位移位寄存器加异或反馈网络组成,其序列长度M=2n-1,只有一个多余状态即全0状态,所以称为最大线性序列发生器。由于其结构已定型,且反馈函数和连接形式都有一定...
  • 序列发生器、序列校验器、序列检测器一条龙服务 序列发生器:产生指定序列 author : Mr.Mao e-mail : 2458682080@qq.com module seq_generator( input clk , input rst_n , output reg data ); //规定输出...

    序列发生器、序列校验器、序列检测器一条龙服务

    序列发生器:产生指定序列

    author : Mr.Mao
    e-mail : 2458682080@qq.com
    
    
    module seq_generator(
        input            clk ,
    	 input            rst_n ,
    	 output    reg    data 
    );
    
    //规定输出数据
        parameter HEAD  = 8'b1110_1000 ;
    	 parameter DATA0 = 8'b1111_0000 ;
    	 parameter DATA1 = 8'b0000_1111 ;
    	 parameter DATA2 = 8'b1111_1111 ;
    	 parameter DATA3 = 8'b1010_1010 ;
    	 parameter SUM   = 8'b1010_1000 ;
    	 
    	 reg [5:0] bit_cnt ;
    
    //模为48的计数器
    always @ (posedge clk or negedge rst_n)
    begin 
         if(!rst_n)
    	      bit_cnt <= 1'b0 ;
    	
         else if(bit_cnt < 6'd47)
    	      bit_cnt <= bit_cnt + 1'b1 ;
    	
         else
    	      bit_cnt <= 1'b0 ;
    end
    
    
    //输出赋值
    always @ (posedge clk or negedge rst_n)
    begin
        if(!rst_n)
    	     data <= 1'b0 ;
    		 
    	 else
    	     case(bit_cnt[5:3])
    		        3'b000 : data <= HEAD[3'd7-bit_cnt[2:0]]    ;
    			    3'b001 : data <= DATA0[3'd7-bit_cnt[2:0]]	;
    				3'b010 : data <= DATA1[3'd7-bit_cnt[2:0]]	;
    				3'b011 : data <= DATA2[3'd7-bit_cnt[2:0]]	;
    				3'b100 : data <= DATA3[3'd7-bit_cnt[2:0]]	;
    				3'b101 : data <= SUM[3'd7-bit_cnt[2:0]]     ;
    			endcase
    end
    
    endmodule
    

    序列校验器:检验序列器产生的序列是否和我们要求的一样

    author : Mr.Mao
    e-mail : 2458682080@qq.com
    
    
    module seq_rd(
         input           clk ,
    	  input           rst_n ,
    	  input           data_in ,
    	  
    	  output   [7:0]  out_data0 ,
    	  output   [7:0]  out_data1 ,
    	  output   [7:0]  out_data2 ,
    	  output   [7:0]  out_data3 ,
    	  output          out_check_flag 
    );
    
    
         reg      [5:0]   bit_cnt ;
    	  reg      [40:0]  data ;
    	  reg      [7:0]   sum ;
    	  wire     [7:0]   sum_check ;
    	  wire             head_check ;
    	  
    assign  {out_data0, out_data1, out_data2, out_data3, sum_check} = data[39:0] ;
    assign  out_check_flag = ((bit_cnt == 6'd40) && (sum_check == sum)) ;
    
    
    seq_detect u_seq_detect(
         .clk              (clk) ,
    	  .rst_n            (rst_n) ,
    	  .data_in          (data_in) ,
    	  .sout             (sout)
    );
    
    
    always @ (posedge clk or negedge rst_n)
    begin 
          if(!rst_n)
    		     begin 
    			      bit_cnt <= 6'b0 ;
    					data <= 40'b0 ;
    			  end
    			  
    		else if(head_check) 
    		     begin
    			      bit_cnt <= 6'd1 ;
    					data[0] <= data_in ;
    			  end
    			  
    		else if(bit_cnt < 6'd40)
    		     begin
    			      bit_cnt <= bit_cnt + 1'b1 ;
    					data[0] <= data_in ;
    					data[40:1] <= data[39:0] ;
    				end
    		
    		else  
    		     begin
    			      bit_cnt <= 6'b0 ;
    			  end
    end
    
    
    always @ (posedge clk or negedge rst_n)
    begin 
          if(!rst_n)
    		    sum <= 8'b0 ;
    			
    		else if(head_check)
    		    sum <= 8'b0 ;
    			 
    		else if(bit_cnt[2:0] == 3'b111 && bit_cnt[5] != 1'b1)
    		    sum <= sum + {data[6:0], data_in} ;
    end
    
    endmodule
    

    序列检测器:检测要求序列

    author : Mr.Mao
    e-mail : 2458682080@qq.com
    
    module seq_detect(      //时序检测
          input        clk ,  //时钟输入
    		input        rst_n ,  //复位信号
    		input        data_in ,  //串行数据输入
    		output wire  sout   //序列检测输出
    );
    
    
    parameter s0 = 0, s1 = 1, s2 = 2, s3 = 3, s4 = 4, s5 = 5, s6 = 6, s7 = 7, s8 = 8 ;
    
    reg  [3:0]          current_state ;
    reg  [3:0]          next_state ;
    
    
    /*现状态的跳转*/
    always @(posedge clk or negedge rst_n)
    begin
         if(!rst_n)
    	      current_state <= s0 ;
    		else 
    		   current_state <= next_state ;
    end
    
    always @(*)
    begin 
         case(current_state)   /*现状态的跳转触发次状态的判断*/
    	      s0 : if(data_in == 1'b1)  next_state <= s1 ; else next_state <= s0 ;
    			s1 : if(data_in == 1'b1)  next_state <= s2 ; else next_state <= s0 ;
    			s2 : if(data_in == 1'b1)  next_state <= s3 ; else next_state <= s0 ;
    			s3 : if(data_in == 1'b0)  next_state <= s4 ; else next_state <= s3 ;
    			s4 : if(data_in == 1'b1)  next_state <= s5 ; else next_state <= s0 ;
    			s5 : if(data_in == 1'b0)  next_state <= s6 ; else next_state <= s2 ;
    			s6 : if(data_in == 1'b0)  next_state <= s7 ; else next_state <= s1 ;
    			s7 : if(data_in == 1'b0)  next_state <= s8 ; else next_state <= s1 ;
    			s8 : if(data_in == 1'b0)  next_state <= s0 ; else next_state <= s1 ;
    			default : next_state <= s0 ;
    		endcase
    end
    
    assign sout = (current_state ==s8) ; /*检测结果输出*/
    
    endmodule
    
    //force data_in 1 0,0 300ns,1 400ns,0 500ns -repeat 800ns	
    //这段命令在Moedelsim命令窗口执行,模拟‘11101000’	输入激励
    

    序列检测器的testbench代码

    `timescale 10 ns/ 100 ps
    module seq_detect_tb();
    
    reg clk ;
    reg data_in ;
    reg rst_n ;
    wire sout ;
    
    
    seq_detect i_seq_detect(
          .sout         (sout),
    		.clk          (clk),
    		.data_in      (data_in),
    		.rst_n        (rst_n)
    );
       
    	  initial
    	      begin
    			clk <= 0 ;
    			rst_n <= 0 ;
    			#10 rst_n <= 1'b1 ;
    			@(negedge clk)
    			repeat(10)
    			   begin
    				   data_in <= $random ;
    					#10 ;
    				end
    				data_in <= 1 ;
    				#10     data_in <= 1 ;
    				#10     data_in <= 1 ;
    				#10     data_in <= 1 ;
    				#10     data_in <= 0 ;
    				#10     data_in <= 1 ;
    				#10     data_in <= 0 ;
    				#10     data_in <= 0 ;
    				#10     data_in <= 0 ;
    			repeat(10)
    			    begin
    				    data_in <= $random ;
    					 #10 ;
    				 end
    			#100   $stop ;
    			end
    			
    			
    		always     #5
    		    begin
    			    clk <= ~clk ;
    			 end
    endmodule
    				
    				
    
    展开全文
  • m序列发生器

    2014-03-21 17:42:48
    利用MATLAB开发一个N=5的m序列发生器的仿真程序
  • matlab开发-Debriijn序列发生器。生成指定字符数和子序列长度的示例de bruijn序列。
  • 基于此特点,提出了一种基于可编程逻辑阵列(FPGA)的双输出查找表(LUT)结构的物理不可克隆函数(PUF)的Logistic随机混沌序列信号发生器,该混沌序列发生器具有物理的唯一性,能够有效地抵抗对于系统的复制和攻击...
  • matlab开发-序列发生器或手动v091。堆芯/序列发生器预释放手册v0.91。
  • 辛辣动作 莎莎舞动序列发生器
  • m序列发生器VHDL

    2013-11-27 18:58:56
    这是一个基于VHDL行为描述方式所产生的m序列发生器,其周期为511.
  • FPGA序列发生器,01011,计数器实现,包含原理图、波形仿真文件
  • 一篇关于FPAG的文章,讨论的是混沌调频序列发生器的verilog语言的实现
  • matlab开发-麦基玻璃时间序列发生器。该函数使用4阶龙格-库塔法生成麦基玻璃时间序列。
  • m序列发生器(线性移位寄存器)产生伪随机码,即m序列。m序列的长度P由移位寄存器级数决定,m序列产生后,进入调相器对载波进行调相,由线性移位寄存器产生的m序列同时送入延迟码产生器,该延迟码产生器输出n路延时不同的...
  • FPGA序列发生器01011,移位寄存器实现,包含原理图、波形仿真文件
  • 伪随机序列 发生器 verilog quartus仿真,带ROM模块
  • M序列发生器FPGA开发实例 伪随机数发生器
  • 随着混沌理论应用于产生伪随机序列的发展,用现场可编程逻辑门阵列实现了基于TD-ERCS混沌的伪随机序列发生器.为了便于硬件实现并减少硬件占用资源,对原算法(即基于TD-ERCS构造伪随机序列发生器的算法)进行了适当改进,...
  • FPGA的伪随机序列发生器设计,写得比较详细,分享给有需要的朋友
  • erdos.yield:clojure中的惰性序列发生器
  • 设计了一种基于Galois结构的任意级数的快速m序列发生器,详细介绍了各功能模块,通过QuartusⅡ对系统进行了仿真与验证。结果表明,该方法实现的m序列发生器结构简单,延时小,速度快,适用范围广。
  • 基于简化Lorenz系统,提出混沌伪随机序列发生器的一种设计方法。根据IEEE-754浮点运算标准,按照模块化设计理念,设计混沌方程所需的浮点运算模块,并在FPGA(Field Programmable Gate Array)上实现了简化Lorenz混沌系统...
  • 基于FPGA的存储器结构,设计了产生 m序列的本原多项式的存储格式及其查询算法,并且提出了对任意级数 n的 m序列发生器的产生方法。试验表明,使用该方法实现的 m序列发生器,结构简单,速度快,适用范围广。
  • 自己写的序列发生器

    2013-05-03 19:44:26
    自己写的序列发生器,比不上那些个大牛,但是希望对北实验困扰的同学有点帮助
  • 摘 要:介绍了一种利用EDA技术,在Altera的MAX7000S系列芯片上实现的伪随机序列发生器,为产生低成本的电子系统测试信号提供了一种简单易行的方法。关键词:EDA;VHDL;CPLD;伪随机序列1 引 言 EDA...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,329
精华内容 531
关键字:

序列发生器