精华内容
下载资源
问答
  • spi verilog

    2014-07-05 20:30:35
    里面描叙一个简单spi verilog design
  • SPI verilog

    2017-06-01 09:00:31
    verilog语言实现SPI的通信
  • spi Verilog

    热门讨论 2013-10-29 18:54:18
    SPI 总线 代码 Verilog 读写 SPI接口的verilog实现 项目中使用的许多器件需要SPI接口进行配置,比如PLL:ADF4350,AD:AD9627,VGA:AD8372等,根据SPI协议,站长编写了一个简单的SPI读写程序,可以进行32为数据的...
  • fpga spi Verilog程序

    2014-04-07 15:26:35
    fpga spi Verilog程序 非常实用,可直接编译
  • SPI verilog仿真实现

    2012-03-18 16:21:10
    SPI verilog仿真实现 仿真功能实现
  • SPI Verilog HDL

    2019-07-30 11:36:40
    SPI Verilog HDL RTL 代码 /********************************************** time:2019.07.30 author: lion A version SPI001 *************************************************/ module spi( clk, rstn, rd, wr...

    SPI Verilog HDL

    RTL 代码

    /**********************************************
    time:2019.07.30
    author: lion A
    version SPI001
    *************************************************/
    
    module spi(
    clk,
    rstn,
    rd,
    wr,
    data_in,
    data_out,
    miso,
    mosi,
    spi_cs,
    spi_clk,
    wr_done,
    rd_done
    );
    
    
    input clk;//system clk 50MHZ
    input rstn;//active low
    input rd;
    input wr;
    input [7:0]data_in;
    input miso;
    
    output reg mosi;
    output reg [7:0]data_out;
    output spi_clk;
    output reg spi_cs;
    output wr_done;
    output rd_done;
    
    reg [2:0] send_cnt;
    reg [2:0] receive_cnt;
    
    reg wr_done_r,rd_done_r;
    
    assign spi_clk=clk;
    assign wr_done=(send_cnt==3'd7)?1:0;
    assign rd_done=(receive_cnt==3'd7)?1:0;
    
    wire spi_wr_en=wr&wr_done_r;
    wire spi_rd_en=rd&rd_done_r;
    
    /
    always@(posedge clk)
      if(!rstn)
        wr_done_r <=1'b0;
      else
        wr_done_r <=~wr_done;
    /
    always@(posedge clk)
      if(!rstn)
        rd_done_r <=1'b0;
      else
        rd_done_r <=~rd_done;
    	
    	
    
    always@(posedge clk)
      if(!rstn)
        begin send_cnt <=3'd0;spi_cs <=1'b1;end
      else if(spi_wr_en)
        begin
    	     case(send_cnt)
    		 3'd0:
    		     begin
    			      send_cnt <=3'd1;
    				  spi_cs   <=1'b0;
    				  mosi     <=data_in[7];
    			 end
    		 3'd1:
    		     begin
    			      send_cnt <=3'd2;
    				  spi_cs   <=1'b0;
    				  mosi     <=data_in[6];
    			 end
    		 3'd2:
    		     begin
    			      send_cnt <=3'd3;
    				  spi_cs   <=1'b0;
    				  mosi     <=data_in[5];
    			 end
    		 3'd3:
    		     begin
    			      send_cnt <=3'd4;
    				  spi_cs   <=1'b0;
    				  mosi     <=data_in[4];
    			 end
    		 3'd4:
    		     begin
    			      send_cnt <=3'd5;
    				  spi_cs   <=1'b0;
    				  mosi     <=data_in[3];
    			 end
    		 3'd5:
    		     begin
    			      send_cnt <=3'd6;
    				  spi_cs   <=1'b0;
    				  mosi     <=data_in[2];
    			 end
    		 3'd6:
    		     begin
    			      send_cnt <=3'd7;
    				  spi_cs   <=1'b0;
    				  mosi     <=data_in[1];
    			 end
    		 3'd7:
    		     begin
    			      send_cnt <=3'd0;
    				  spi_cs   <=1'b0;
    				  mosi     <=data_in[0];
    			 end
            endcase			 
    	end
       else
        begin
    	     send_cnt <=3'd0;
    		 spi_cs <=1'b1;
    		 mosi <=1'b0;
    	end
    
    always@(posedge clk)
      if(!rstn)
        begin
    	receive_cnt <=3'd0;
    	spi_cs <=1'b1;
    	end
      else if(spi_rd_en)
        begin
    	     case(receive_cnt)
    		 3'd0:
    		     begin
    			      receive_cnt <=3'd1;
    				  spi_cs   <=1'b0;
    				  data_out[7] <=miso;
    			 end
    		 3'd1:
    		     begin
    			      receive_cnt <=3'd2;
    				  spi_cs   <=1'b0;
    				  data_out[6] <=miso;
    			 end
    		 3'd2:
    		     begin
    			      receive_cnt <=3'd3;
    				  spi_cs   <=1'b0;
    				  data_out[5] <=miso;
    			 end
    		 3'd3:
    		     begin
    			      receive_cnt <=3'd4;
    				  spi_cs   <=1'b0;
    				  data_out[4] <=miso;
    			 end
    		 3'd4:
    		     begin
    			      receive_cnt <=3'd5;
    				  spi_cs   <=1'b0;
    				  data_out[3] <=miso;
    			 end
    		 3'd5:
    		     begin
    			      receive_cnt <=3'd6;
    				  spi_cs   <=1'b0;
    				  data_out[2] <=miso;
    			 end
    		 3'd6:
    		     begin
    			      receive_cnt <=3'd7;
    				  spi_cs   <=1'b0;
    				  data_out[1] <=miso;
    			 end
    		 3'd7:
    		     begin
    			      receive_cnt <=3'd0;
    				  spi_cs   <=1'b0;
    				  data_out[0] <=miso;
    			 end	
            endcase			 
    	end
       else
        begin
    	     receive_cnt <=3'd0;
    		 spi_cs <=1'b1;
    		 mosi <=1'b0;
    		 data_out <=7'b0;
    	end
    	
    endmodule 
    

    测试代码

    /*****************************
    this is a test code for spi function
    
    ***************************************/
    `timescale 1 ns/ 1ns
    `define clk_periond 100
    
    module spi_tb;
    
    
    reg clk;//system clk 50MHZ
    reg rstn;//active low
    reg rd;
    reg wr;
    reg [7:0]data_in;
    reg miso;
    
    wire mosi;
    wire [7:0]data_out;
    wire spi_clk;
    wire spi_cs;
    wire wr_done;
    wire rd_done;
    
    spi spi(
    .clk(clk),
    .rstn(rstn),
    .rd(rd),
    .wr(wr),
    .data_in(data_in),
    .data_out(data_out),
    .miso(miso),
    .mosi(mosi),
    .spi_cs(spi_cs),
    .spi_clk(spi_clk),
    .wr_done(wr_done),
    .rd_done(rd_done)
    );
    
    
    always #(`clk_periond/2) clk =~clk;
    
    initial 
           begin
    	        clk=0;
    			rstn=1;
    			data_in=8'ha3;
    			
    			#(`clk_periond+20)
    			  rstn=0;
    			  
    			#(`clk_periond*5)
    			  rstn=1;
    			 
    			#(`clk_periond*5)
    			  rd=1;
    			  wr=1;
    			#(`clk_periond*9)
    			  rd=0;
                  wr=0;
                #(`clk_periond*10)
                  $stop;		  
    	   
    	   end
    	   
        always@(posedge spi_clk)
           if(rd|wr)
              miso =mosi;
           else
              miso =0;   
        
        
        endmodule
    
    展开全文
  • spi verilog语言描述

    2011-03-10 15:43:57
    spi verilog语言描述 fpga应用
  • SPI verilog代码,已通过仿真与FPGA验证。可以集成在FPGA里面,迅速开发成品。 兄弟差积分,就顺手上传了一些项目资料。
  • SPI verilog代码

    2018-04-02 17:50:19
    有非常详细的注释,可供参考!
  • 通过verilog编写语言实现读写操作SPI的flash芯片,经过验证可用,能够实现读取芯片DEVICE id Cyclone IV E系列的EP4CE10F17C8 W25Q128BV
  • 基于fpga的spi master verilog代码
  • SPI协议Verilog实现

    2020-05-03 12:33:34
    fpga spi Verilog程序 非常实用,可直接编译。结合https://blog.csdn.net/qq_42334072/article/details/105900315食用更佳。
  • SPI_Verilog

    2012-01-02 00:47:23
    SPI_Verilog,SPIVerilog实现(非常的全面和详细,还带有SPI算法的注解)
  • SPI_Verilog实现

    2019-03-06 20:26:08
    SPI协议的Verilog实现。并详细介绍了SPI协议的用法
  • spi协议verilog描述

    2020-06-28 10:19:05
    verilog描述的spi,包括一个apb的上层的模块,经过自己手动验证,没有太多注释,介意请不要下载
  • spi fpga verilog 代码

    2016-11-23 21:23:26
    简单易懂的spi线,使用Verilog语言编写,里面代码分为spi_master.v ;spi_slave.v,并且有仿真环境及testbench代码,强调一点,只是作为快速理解spi总线的,若要用于工程项目的话,还需要添加其他代码,请自行添加。
  • spi时序verilog实现

    2017-12-02 17:17:53
    verilog语言实现一个简单的spi时序逻辑,代码风格简洁规范。
  • SPI Master Verilog Source

    2013-03-27 15:31:53
    设计SPI Master的Verilog代码,1个Master 对应8个Spi Slave 设备,来自Alterra官方,对我设计Spi接口的烧录器时的参考非常大,希望对大家有用。
  • spi_verilog

    2012-09-04 22:56:32
    给出用Verilog HDL语言实现前两项功能的关键程序
  • SPI_verilog实现

    2010-12-02 20:28:03
    SPIverilog实现,可以实现MCU与FPGA的通信,以及可以略加修改实现nios 的IP核
  • SPIverilog实现

    2009-11-19 21:20:44
    SPIverilog实现 有详细的注释 全面且容易理解 好东西 分享一下
  • spi-verilog-fpga

    2014-12-18 22:29:42
    fpga,spi程序verilog,可用于学习,或者联系用,模块之间的互连,经典
  • SPI-verilog

    2011-07-24 03:54:00
    关于SPI控制器的设计,设计非常巧妙。已经成功流片。
  • SPIverilog IP核

    2015-06-08 13:46:42
    从opencores网站上下载的SPI IP核verilog代码,很好代码风格
  • spi接口协议 verilog语言描述
  • SPI接口 HDL Verilog

    2019-01-20 15:21:29
    SPI接口verilog代码,自己编写的接口代码,主模块,已实验过可以读取spi flash的数据,可供参考
  • verilog spi

    2011-12-02 22:05:59
    利用verilog开发的spi程序,仅供参考,如有问题,可以与我联系讨论
  • spi slave verilog源码

    2015-04-10 08:42:19
    实现spi slave收发 从dsp获取读写指令,地址信息,写入数据到指定地址,或者读取地址数据发回dsp 地址位宽可调整,每次读写一个byte数据 游戏之作,希望大家喜欢

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 444
精华内容 177
热门标签
关键字:

spiverilog