推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

Cyclone2 FPGA读写 ADC_TLC549实验Verilog逻辑源码Quartus工程文件

更新时间:2021-09-02 11:29:41 大小:2M 上传用户:xzxbybd查看TA发布的资源 标签:fpgaadc 下载积分:9分 评价赚积分 (如何评价?) 收藏 评论(0) 举报

资料介绍

Cyclone2 FPGA读写 ADC_TLC549实验Verilog逻辑源码Quartus工程文件

module AD_TLC549 ( 

                  //input 

input             sys_clk             ,    //system clock;

input             sys_rst_n           ,    //system reset, low is active;


input             AD_IO_DATA          ,    


                  //output 

output reg        AD_IO_CLK           ,     

output reg        AD_CS               ,    


output reg [7:0]  LED                 

              );


//Reg define 

reg    [6:0]             div_cnt             ;

reg                      ad_clk              ;


reg    [4:0]             ctrl_cnt            ;


reg    [7:0]             ad_data_shift       ;


//Wire define 



//************************************************************************************

//**                              Main Program    

//**  

//************************************************************************************



// counter used for div osc clk to ad ctrl clk  50M/64 = 0.78Mhz

always @(posedge sys_clk or negedge sys_rst_n) begin 

    if (sys_rst_n ==1'b0) 

        div_cnt <= 6'b0;

    else  

        div_cnt <= div_cnt + 6'b1;

end


//gen ad_clk

always @(posedge sys_clk or negedge sys_rst_n) begin 

    if (sys_rst_n ==1'b0) 

     ad_clk <= 1'b0 ;

    else if ( div_cnt <= 6'd31 ) 

        ad_clk <= 1'b1 ;

    else  

        ad_clk <= 1'b0 ;

end


// ad ctrl signal gen 

// ctrl_cnt  0 - 32is for ad ctrl


always @(posedge ad_clk or negedge sys_rst_n) begin 

    if (sys_rst_n ==1'b0) 

        ctrl_cnt <= 5'b0;

    else  

        ctrl_cnt <= ctrl_cnt + 5'b1;

end


always @(posedge ad_clk or negedge sys_rst_n) begin 

    if (sys_rst_n ==1'b0) 

        AD_IO_CLK <= 1'b0;

    else if (  ctrl_cnt == 5'd6  || ctrl_cnt == 5'd8  || ctrl_cnt == 5'd10

            || ctrl_cnt == 5'd12 || ctrl_cnt == 5'd14 || ctrl_cnt == 5'd16 

            || ctrl_cnt == 5'd18 || ctrl_cnt == 5'd20 )  // ad clk low

        AD_IO_CLK <= 1'b1;

else

     AD_IO_CLK <= 1'b0;

end


always @(posedge ad_clk or negedge sys_rst_n) begin 

    if (sys_rst_n ==1'b0) 

        AD_CS <= 1'b1;

    else if ( ctrl_cnt >= 5'd1 && ctrl_cnt <= 5'd25 )  // ad output cs

        AD_CS <= 1'b0;

else

     AD_CS <= 1'b1;

end


 // shift AD return analog DATA to ad_data_shift reg use AD_IO_CLK rising edge

always @(posedge ad_clk or negedge sys_rst_n) begin 

    if (sys_rst_n ==1'b0) 

        ad_data_shift <= 8'b0;

    else if ( AD_CS == 1'b1 )

        ad_data_shift <= 8'b0;

    else if ( AD_IO_CLK == 1'b1 )     

        ad_data_shift <= { ad_data_shift[6:0], AD_IO_DATA } ;

    else ;

end


//display AD sample data to LED when ad_data_shift is constanct

always @(posedge ad_clk or negedge sys_rst_n) begin 

    if (sys_rst_n ==1'b0) 

        LED <= 8'b0

image.png

部分文件列表

文件名大小
AD_TLC549/
AD_TLC549/.qsys_edit/
AD_TLC549/.qsys_edit/filters.xml
AD_TLC549/.qsys_edit/preferences.xml
AD_TLC549/AD_TLC549.asm.rpt8KB
AD_TLC549/AD_TLC549.done
AD_TLC549/AD_TLC549.fit.rpt
AD_TLC549/AD_TLC549.fit.smsg1KB
AD_TLC549/AD_TLC549.fit.summary1KB
AD_TLC549/AD_TLC549.flow.rpt
AD_TLC549/AD_TLC549.jdi4KB
...

全部评论(0)

暂无评论