国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SPI簡介及FPGA通用MOSI模塊實現(xiàn)

這篇具有很好參考價值的文章主要介紹了SPI簡介及FPGA通用MOSI模塊實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

簡介

SPI(Serial Peripheral Interface,串行外圍設(shè)備接口)通訊協(xié)議,是Motorola公司提出的一種同步串行接口技術(shù)。是一種高速、全雙工、同步通信總線。在芯片中只占用四根管腳用來控制及數(shù)據(jù)傳輸。

優(yōu)缺點:

SPI通訊協(xié)議的優(yōu)點是支持全雙工通信,通訊方式較為簡單,且相對數(shù)據(jù)傳輸速率較快;
缺點是沒有指定的流控制,沒有應(yīng)答機(jī)制確認(rèn)數(shù)據(jù)是否接收,與IIC總線通訊協(xié)議相比,在數(shù)據(jù)可靠性上有一定缺陷。

物理層

對于SPI協(xié)議的物理層,需要講解的就是SPI通訊設(shè)備的連接方式和設(shè)備引腳的功能描述。
SPI通訊設(shè)備的通訊模式是主從通訊模式,通訊雙方有主從之分,根據(jù)從機(jī)設(shè)備的個數(shù),SPI通訊設(shè)備之間的連接方式可分為一主一從和一主多從,具體見下圖1、2。

spi通訊mosi,# FPGA協(xié)議與接口,fpga開發(fā),spi協(xié)議
圖 1 一主一從SPI通訊設(shè)備連接圖
spi通訊mosi,# FPGA協(xié)議與接口,fpga開發(fā),spi協(xié)議
圖 2 一主多從SPI通訊設(shè)備連接圖

SPI通訊協(xié)議包含1條時鐘信號線、2條數(shù)據(jù)總線和1條片選信號線, 時鐘信號線為SCK,2條數(shù)據(jù)總線分別為MOSI(主輸出從輸入)、MISO(主輸入從輸出),片選信號線為,它們的作用介紹如下:

  1. SCK (Serial Clock):時鐘信號線,用于同步通訊數(shù)據(jù)。由通訊主機(jī)產(chǎn)生,決定了通訊的速率,不同的設(shè)備支持的最高時鐘頻率不同,兩個設(shè)備之間通訊時,通訊速率受限于低速設(shè)備。

  2. MOSI (Master Output, Slave Input):主設(shè)備輸出/從設(shè)備輸入引腳。主機(jī)的數(shù)據(jù)從這條信號線輸出,從機(jī)由這條信號線讀入主機(jī)發(fā)送的數(shù)據(jù),數(shù)據(jù)方向由主機(jī)到從機(jī)。

  3. MISO (Master Input,Slave Output):主設(shè)備輸入/從設(shè)備輸出引腳。主機(jī)從這條信號線讀入數(shù)據(jù),從機(jī)的數(shù)據(jù)由這條信號線輸出到主機(jī),數(shù)據(jù)方向由從機(jī)到主機(jī)。

  4. (Chip Select):片選信號線,也稱為CS_N,以下用CS_N表示。當(dāng)有多個SPI從設(shè)備與SPI主機(jī)相連時,設(shè)備的其它信號線SCK、MOSI及MISO同時并聯(lián)到相同的SPI總線上,即無論有多少個從設(shè)備,都共同使用這3條總線;而每個從設(shè)備都有獨立的這一條CS_N信號線,本信號線獨占主機(jī)的一個引腳,即有多少個從設(shè)備,就有多少條片選信號線。

I2C協(xié)議中通過設(shè)備地址來尋址、選中總線上的某個設(shè)備并與其進(jìn)行通訊;而SPI協(xié)議中沒有設(shè)備地址,它使用CS_N信號線來尋址,當(dāng)主機(jī)要選擇從設(shè)備時,把該從設(shè)備的CS_N信號線設(shè)置為低電平,該從設(shè)備即被選中,即片選有效,接著主機(jī)開始與被選中的從設(shè)備進(jìn)行 SPI通訊。所以SPI通訊以CS_N線置低電平為開始信號,以CS_N線被拉高作為結(jié)束信號。

四種通訊模式

SPI通訊協(xié)議一共有四種通訊模式,模式0、模式1、模式2以及模式3,這4種模式分別由時鐘極性(CPOL,Clock Polarity)和時鐘相位(CPHA,Clock Phase)來定義。

CPOL參數(shù)規(guī)定了空閑狀態(tài)(CS_N為高電平,設(shè)備未被選中)時SCK時鐘信號的電平狀態(tài);
CPHA規(guī)定了數(shù)據(jù)采樣是在SCK時鐘的奇數(shù)邊沿還是偶數(shù)邊沿。

極性和相位

SPI的極性Polarity和相位Phase,最常見的寫法是CPOL和CPHA,不過也有一些其他寫法,簡單總結(jié)如下:
(1) CKPOL (Clock Polarity) = CPOL = POL = Polarity = (時鐘)極性
(2) CKPHA (Clock Phase) = CPHA = PHA = Phase = (時鐘)相位
(3) SCK=SCLK=SPI的時鐘
(4) Edge=邊沿,即時鐘電平變化的時刻,即上升沿(rising edge)或者下降沿(falling edge)

模式判別

CPOL,表示當(dāng)SCLK空閑idle的時候,其電平的值是低電平0還是高電平1:
CPOL=0,時鐘空閑idle時候的電平是低電平,所以當(dāng)SCLK有效的時候,就是高電平,就是所謂的active-high;
CPOL=1,時鐘空閑idle時候的電平是高電平,所以當(dāng)SCLK有效的時候,就是低電平,就是所謂的active-low;

CPHA=0,表示第一個邊沿
對于CPOL=0,idle時候的是低電平,第一個邊沿就是從低變到高,所以是上升沿;
對于CPOL=1,idle時候的是高電平,第一個邊沿就是從高變到低,所以是下降沿;

CPHA=1,表示第二個邊沿
對于CPOL=0,idle時候的是低電平,第二個邊沿就是從高變到低,所以是下降沿;
對于CPOL=1,idle時候的是高電平,第一個邊沿就是從低變到高,所以是上升沿;

SPI通訊協(xié)議的4種模式如下,通訊模式時序圖,具體見下圖 :
模式0:CPOL= 0,CPHA=0??臻e狀態(tài)時SCK串行時鐘為低電平;數(shù)據(jù)采樣在SCK時鐘的上升沿;數(shù)據(jù)更新在SCK時鐘的下降沿。
模式1:CPOL= 0,CPHA=1??臻e狀態(tài)時SCK串行時鐘為低電平;數(shù)據(jù)采樣在SCK時鐘的下降沿;數(shù)據(jù)更新在SCK時鐘的上升沿。
模式2:CPOL= 1,CPHA=0??臻e狀態(tài)時SCK串行時鐘為高電平;數(shù)據(jù)采樣在SCK時鐘的下降沿;數(shù)據(jù)更新在SCK時鐘的上升沿。
模式3:CPOL= 1,CPHA=1??臻e狀態(tài)時SCK串行時鐘為高電平;數(shù)據(jù)采樣在SCK時鐘的上升沿;數(shù)據(jù)更新在SCK時鐘的下降沿。
spi通訊mosi,# FPGA協(xié)議與接口,fpga開發(fā),spi協(xié)議
模式的判斷:
如果起始的SCLK的電平是0,那么CPOL=0,如果是1,那么CPOL=1,
然后看數(shù)據(jù)采樣時刻,對應(yīng)到上面SCLK時鐘的位置,對應(yīng)著是第一個邊沿或是第二個邊沿,即CPHA是0或1

時序需求

tSLCH:cs_n拉低到sck高的時間
tCHSH:sck高到cs_n拉高的時間
SCK上升沿MOSI的建立時間保持時間需求
tSHSL:取消選擇的時間,兩串?dāng)?shù)據(jù)間隔時間
spi通訊mosi,# FPGA協(xié)議與接口,fpga開發(fā),spi協(xié)議

SPI通用模塊

實現(xiàn)功能

用于將任意寬度向量型數(shù)據(jù)轉(zhuǎn)換為SPI串行輸出,模式0:CPOL= 0,CPHA=0;
默認(rèn)串行數(shù)據(jù)mosi數(shù)據(jù)的建立時間和保持時間均為2個clk(0.5*DIV_FREQUENCY)周期,即sck上升沿的前后2個(0.5*DIV_FREQUENCY)clk數(shù)據(jù)穩(wěn)定,串行時鐘sck周期為4*clk(DIV_FREQUENCY)的周期;
默認(rèn)tSLCH(cs_n拉低到sck高的時間為6*clk(1.5*DIV_FREQUENCY)周期),tCHSH(sck高到cs_n拉高的時間為2*clk(0.5*DIV_FREQUENCY)周期);
默認(rèn)tSHSL為10個clk的周期;
若時序滿足此模塊可以不做修改。若需要修改在外部例化時修改DIV_FREQUENCY(只能偶分頻)和PERIOD_WIDTH_MAX,CNT_SHSL_MAX和CNT_SHSL_WIDTH即可。

使用方法

輸入data的位寬和計數(shù)器位寬在外部進(jìn)行例化時修改參數(shù)的值即可,不必修改SPI模塊
DATA_WIDTH_MAX修改為輸入數(shù)據(jù)的位寬,如[31:0]的數(shù)據(jù)則DATA_WIDTH_MAX=32
CNT_DATA_WIDTH_MAX修改為輸入數(shù)據(jù)的位寬計數(shù)器需要的位寬上限,即DATA_WIDTH_MAX=32對應(yīng)的二進(jìn)制位寬32=6’b10_0000,所以CNT_DATA_WIDTH_MAX=6

輸入輸出端口說明:

//input
input 		wire 						clk 			, //系統(tǒng)時鐘,spi串行時鐘的分頻基準(zhǔn) 			
input 		wire						clr_n 			, //spi信號標(biāo)志信號,允許發(fā)送時一直拉高,重新發(fā)送時拉低復(fù)位再拉高
input 	  	wire  [DATA_WIDTH_MAX-1:0] 	data 			, //需要data與clr_n一同進(jìn)入			
	                                                    
//output	                                            
output		reg							cs_n 			, //片選信號
output 	  	reg			 				sck 			, //串行時鐘
output		reg							mosi 			, //主輸出從輸入數(shù)據(jù)
output		reg							flag 			  //spi發(fā)送完成標(biāo)志位,完成則一直拉高;clr_n置0時拉低

例化模板:

spi #(
.DATA_WIDTH_MAX 	(8	 	),
.CNT_DATA_WIDTH_MAX	(4		) 
)
u_spi(
	.clk 	(clk			),
	.clr_n  (clr_n			),
	.data   (data_in		),
		
	.cs_n   (cs_n			),
	.sck    (sck 			),
	.mosi   (mosi			),
	.flag   (flag			)
); 

SPI模塊

//========================================================================
// 	module_name.v	:spi.v
// 	Author			:YprgDay
// 	Description		:用于將任意寬度向量型數(shù)據(jù)轉(zhuǎn)換為SPI串行輸出,模式0:CPOL= 0,CPHA=0。
//========================================================================
module spi
 #(
	//=========================< Parameter >==============================
	parameter 				DATA_WIDTH_MAX		=	32				,//例化時修改為輸入數(shù)據(jù)的位寬,如[31:0]的數(shù)據(jù)則DATA_WIDTH_MAX	=32
	parameter 				CNT_DATA_WIDTH_MAX	=	6				,//例化時修改為輸入數(shù)據(jù)的位寬計數(shù)器需要的位寬上限,即DATA_WIDTH_MAX=32對應(yīng)的二進(jìn)制位寬32=6'b10_0000,所以CNT_DATA_WIDTH_MAX=6

	parameter 				DIV_FREQUENCY		=	4				,//分頻數(shù)(只允許偶分頻),串行時鐘sck周期為DIV_FREQUENCY*clk的周期
	parameter 				PERIOD_WIDTH_MAX	=	2				,//(DIV_FREQUENCY-1)對應(yīng)的二進(jìn)制位寬即為PERIOD_WIDTH_MAX
	parameter 				CNT_PERIOD_MAX		=	DIV_FREQUENCY-1	,
	parameter 				CNT_HALF_PERIOD_MAX	=	CNT_PERIOD_MAX >> 1	,//計數(shù)分頻中值
	parameter 				CNT_SHSL_MAX		=   10				,//tSHSL計數(shù)10個clk周期
	parameter 				CNT_SHSL_WIDTH		=   4				 //CNT_SHSL_MAX的二進(jìn)制位寬
) 
(
	//=========================< Port Name >==============================
	//input
	input 		wire 						clk 			, //系統(tǒng)時鐘,spi串行時鐘的分頻基準(zhǔn) 			
	input 		wire						clr_n 			, //spi信號標(biāo)志信號,允許發(fā)送時一直拉高,重新發(fā)送時拉低復(fù)位再拉高		
	input 	  	wire  [DATA_WIDTH_MAX-1:0] 	data 			, //需要data與clr_n一同進(jìn)入			
		                                                    
	//output	                                            
	output		reg							cs_n 			, //片選信號
	output 	  	reg			 				sck 			, //串行時鐘
	output		reg							mosi 			, //主輸出從輸入數(shù)據(jù)
	output		reg							flag 			  //spi發(fā)送完成標(biāo)志位,完成則一直拉高;clr_n置0時拉低
	
);

	//=========================< Always block >===========================
	reg [CNT_DATA_WIDTH_MAX-1:0] 	cnt_data_width			;//輸出到第幾位計數(shù)
	reg [PERIOD_WIDTH_MAX-1:0] 		cnt_spi_period			;//時鐘分頻計數(shù)
	reg [DATA_WIDTH_MAX-1:0] 		data_reg	  			;//存輸入數(shù)據(jù),保證一個spi發(fā)送周期數(shù)據(jù)不改變
	reg [CNT_SHSL_WIDTH-1:0]		cnt_shsl				;//SHSL時間計數(shù),保證兩串spi的時序需求
	
	//輸出的cs_n片選信號
	always @(posedge clk or negedge clr_n)begin
		if(clr_n == 1'b0)begin
			cs_n <= 1'b1;
		end
		else if(cnt_data_width == DATA_WIDTH_MAX && cnt_spi_period == CNT_PERIOD_MAX)begin
            cs_n <= 1'b1;
		end
		else begin
			cs_n <= 1'b0;
		end
	end	
	
	//輸出的sck串行時鐘信號,
	always @(posedge clk or negedge clr_n)begin
		if(clr_n == 1'b0)begin
			sck <= 0;
		end
		else if(cnt_data_width > 0 && cnt_spi_period == CNT_PERIOD_MAX)begin
            sck <= 0;
		end
		else if(cnt_data_width > 0 && cnt_spi_period == CNT_HALF_PERIOD_MAX)begin
			sck <= 1;
		end
		else begin
			sck <= sck;
		end
	end
	
	//mosi的串行輸出
	always @(posedge clk or negedge clr_n)begin
		if(clr_n == 1'b0)begin
			mosi <= 0;
		end
		else if(cnt_data_width == DATA_WIDTH_MAX && cnt_spi_period == CNT_PERIOD_MAX)begin
            mosi <= 0;
		end
		else if(cnt_spi_period == CNT_PERIOD_MAX)begin
            mosi <= data_reg[DATA_WIDTH_MAX-1-cnt_data_width];
		end
		else begin
			mosi <= mosi;
		end
	end 
	
	
	//輸出的串行數(shù)據(jù)發(fā)送完成標(biāo)志信號,發(fā)送完成即拉高
	always @(posedge clk or negedge clr_n)begin
		if(clr_n == 1'b0)begin
			flag <= 0;
		end
		else if(cnt_shsl == CNT_SHSL_MAX)begin
            flag <= 1;
		end
		else begin
			flag <= 0;
		end
	end
	
	//輸入數(shù)據(jù)寄存,保證data在一串SPI數(shù)據(jù)發(fā)完之間不發(fā)生變化
	always @(posedge clk or negedge clr_n)begin
		if(clr_n == 1'b0)begin
			data_reg <= 0;
		end
		else if(cnt_data_width == 0 && cnt_spi_period == 1)begin
            data_reg <= data;
		end
		else begin
			data_reg <= data_reg;
		end
	end
	
	//時鐘四分頻計數(shù)
	always @(posedge clk or negedge clr_n)begin
		if(clr_n == 1'b0)begin
			cnt_spi_period <= 0;
		end
		else if(cnt_data_width == DATA_WIDTH_MAX && cnt_spi_period == CNT_PERIOD_MAX)begin
			cnt_spi_period <= cnt_spi_period;
		end
		else if(cnt_spi_period == CNT_PERIOD_MAX)begin
			cnt_spi_period <= 0;
		end
		else if(cs_n == 0)begin
			cnt_spi_period <= cnt_spi_period + 1'b1;
		end
		else;
	end	
	
	//計數(shù)表示此時輸出到[DATA_WIDTH_MAX:0] data的第幾位位置
	always @(posedge clk or negedge clr_n)begin
		if(clr_n == 1'b0)begin
			cnt_data_width <= 0;
		end
		else if(cnt_data_width == DATA_WIDTH_MAX && cnt_spi_period == CNT_PERIOD_MAX)begin
			cnt_data_width <= cnt_data_width;
		end
		else if(cnt_spi_period == CNT_PERIOD_MAX)begin
            cnt_data_width <= cnt_data_width + 1'b1;
		end
		else;
	end
	
	
	//SHSL時間計數(shù),保證兩串spi的時序需求,用于對flga信號拉高判斷
	always @(posedge clk or negedge clr_n)begin
		if(clr_n == 1'b0)begin
			cnt_shsl <= 0;
		end
		else if(cnt_shsl == CNT_SHSL_MAX)begin
            cnt_shsl <= cnt_shsl;
		end
		else if(cnt_data_width == DATA_WIDTH_MAX && cnt_spi_period == CNT_PERIOD_MAX)begin
			cnt_shsl <= cnt_shsl + 1'b1;
		end
		else;
	end
	
endmodule

仿真模塊

`timescale 1ns / 1ps
//
// Module Name: tb_spi
// Dependencies: spi模塊仿真
//
module tb_spi();

	//=========================< Parameter >==============================
	parameter 				SPI_CLK_PERIOD		=	2			    ;//設(shè)置spi時鐘信號周期
	parameter 				HALF_SPI_CLK_PERIOD	=	SPI_CLK_PERIOD/2;//生成spi時鐘信號半周期

	//=========================< Port Name >==============================
	//input
	reg						clk								;
	reg    					clr_n							;
	reg 		[7:0]		data_in							;
	//output
	wire					mosi							;
	wire					cs_n							;
	wire					sck								;
	wire					flag							;
	
	//==========================< Clock block >============================
	always 	  	#HALF_SPI_CLK_PERIOD		clk = ~clk	;
	
	//==========================< Reset block >============================
	 initial begin
		clk 		= 	1'b1	;
		clr_n  		<= 	1'b0	;
		data_in     <=	0		;
		#HALF_SPI_CLK_PERIOD
		clr_n  		<= 	1'b1	;
		data_in     <=	8'h83	;
		#30
		data_in     <=	8'h54	;
		#300
		clr_n  		<= 	1'b0	;
		data_in     <=	8'hc7	;
		#10
		clr_n  		<= 	1'b1	;
	end
	
	//==========================< Module Instance >============================
	spi #(
	.DATA_WIDTH_MAX 	(8	 	),
	.CNT_DATA_WIDTH_MAX	(4		)				
	)
	u_spi(
		.clk 	(clk			),
		.clr_n  (clr_n			),
		.data   (data_in		),
			
		.cs_n   (cs_n			),
		.sck    (sck 			),
		.mosi   (mosi			),
		.flag   (flag			)
	); 

endmodule

仿真時序圖

以8位輸入數(shù)據(jù)[7:0]data的SPI時序圖為例
spi通訊mosi,# FPGA協(xié)議與接口,fpga開發(fā),spi協(xié)議文章來源地址http://www.zghlxwxcb.cn/news/detail-824371.html

到了這里,關(guān)于SPI簡介及FPGA通用MOSI模塊實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • FPGA模塊——SPI協(xié)議(讀寫FLASH)

    FPGA模塊——SPI協(xié)議(讀寫FLASH)

    芯片引腳圖: 內(nèi)部結(jié)構(gòu)圖: 存儲區(qū)域總共分成了32塊,每塊64KB。每塊又分成了16個部分,每個部分4KB。方便進(jìn)行讀取和局部操作。 電路設(shè)計 SPI的四種模式 這里使用這個模式: 主機(jī)和從機(jī)在時鐘上升沿放入要輸出的數(shù)據(jù),在時鐘下降沿讀取要輸入的數(shù)據(jù)。 8個時鐘后交換一個

    2024年02月05日
    瀏覽(21)
  • 基于SPI的FPGA-MCU通用通信界面設(shè)計與技術(shù)詳解

    基于SPI的FPGA-MCU通用通信界面設(shè)計與技術(shù)詳解

    FPGA與MCU之間的通信想必是很多異構(gòu)人極為頭疼的難題。如果每次寫一個工程都要大費周章重寫通信邏輯、通信協(xié)議之類的東西,不僅耗費心神,而且浪費時間。本文基于安陸PH1A90SBG484,提出一個已經(jīng)通過門級仿真驗證的通用通信界面解決方案。詳細(xì)代碼見以下鏈接: Github代

    2024年02月04日
    瀏覽(23)
  • FPGA實現(xiàn)SPI接口(1)--什么是SPI接口?

    FPGA實現(xiàn)SPI接口(1)--什么是SPI接口?

    目錄 1、什么是SPI協(xié)議 2、SPI協(xié)議詳述 2.1、SPI協(xié)議物理層 2.2、SPI 協(xié)議層 2.3、SPI協(xié)議通信過程 2.4、SPI協(xié)議的特性 2.5、SPI協(xié)議的優(yōu)勢、劣勢 3、驅(qū)動代碼的設(shè)計實現(xiàn) 3.1、接口定義與整體設(shè)計 3.2、Verilog代碼 4、Testbench及仿真結(jié)果 4.1、單個BYTE的仿真 4.2、多個BYTE的仿真 5、其他 ?

    2024年02月09日
    瀏覽(16)
  • FPGA——實現(xiàn)三線SPI和UART

    FPGA——實現(xiàn)三線SPI和UART

    目錄 邏輯框圖(原理圖) 端口約束和ILA ?ILA waveform ?實測波形 串口調(diào)試工具 源代碼 頂層 ?FPGA和芯片之間通過三線SPI接口通信(DATA復(fù)用一個IO端口),F(xiàn)PGA和PC之間通過UART串口通信。 原理圖包含4個模塊,分別為:內(nèi)建模塊IBUFDS(用于將外部差分時鐘轉(zhuǎn)換為內(nèi)部單端時鐘)、

    2024年02月09日
    瀏覽(15)
  • FPGA常見接口及邏輯實現(xiàn)(三)—— SPI

    FPGA常見接口及邏輯實現(xiàn)(三)—— SPI

    一、SPI協(xié)議簡介 ????????SPI是串行外設(shè)接口(Serial Peripheral Interface)的縮寫,是一種同步串行接口,相對于之前介紹過的UART和I2C,SPI的速率就高出很多,最高能到100M左右,SPI協(xié)議比較簡單,就不多做介紹,主要介紹下與UART和I2C的不同,SPI是一主多從協(xié)議,每個從機(jī)通過

    2024年04月26日
    瀏覽(17)
  • 【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議

    【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議

    ????????該實現(xiàn)由兩個組件組成:在 LabVIEW FPGA 中實現(xiàn)的 SPI 協(xié)議以及用于從主機(jī) PC 或?qū)崟r控制器與 FPGA 進(jìn)行通信的 LabVIEW 主機(jī)接口。該架構(gòu)允許從單個主機(jī)程序控制多個 SPI 端口,同時仍然允許定制 FPGA VI 以進(jìn)行其他數(shù)據(jù)采集和處理。該實現(xiàn)不使用任何DMA(直接內(nèi)存訪問

    2024年01月17日
    瀏覽(41)
  • 基于SPI實現(xiàn)stm32與fpga通信(一)

    SPI通信協(xié)議有以下4種模式: 模式0:時鐘極性為0,時鐘相位為0,數(shù)據(jù)在時鐘下降沿捕獲,數(shù)據(jù)在時鐘上升沿改變。 模式1:時鐘極性為0,時鐘相位為1,數(shù)據(jù)在時鐘上升沿捕獲,數(shù)據(jù)在時鐘下降沿改變。 模式2:時鐘極性為1,時鐘相位為0,數(shù)據(jù)在時鐘上升沿捕獲,數(shù)據(jù)在時鐘

    2024年04月16日
    瀏覽(43)
  • 孩子都能學(xué)會的FPGA:第三十一課——用FPGA實現(xiàn)SPI主機(jī)發(fā)送數(shù)據(jù)

    孩子都能學(xué)會的FPGA:第三十一課——用FPGA實現(xiàn)SPI主機(jī)發(fā)送數(shù)據(jù)

    (原創(chuàng)聲明:該文是 作者的原創(chuàng) ,面向?qū)ο笫?FPGA入門者 ,后續(xù)會有進(jìn)階的高級教程。宗旨是 讓每個想做FPGA的人輕松入門 , 作者不光讓大家知其然,還要讓大家知其所以然 !每個工程作者都搭建了全自動化的仿真環(huán)境,只需要雙擊 top_tb.bat 文件就可以完成整個的仿真(前

    2024年02月04日
    瀏覽(26)
  • SPI總線通訊協(xié)議學(xué)習(xí)

    SPI總線通訊協(xié)議學(xué)習(xí)

    目錄 什么是SPI 信號線 理解通訊原理 采樣 ?SPI的推廣 SPI是芯片與芯片之間的通訊,準(zhǔn)確得說是 串行同步通訊 。既然都說了同步,那發(fā)送數(shù)據(jù)當(dāng)然要和時鐘線SCK配合才能發(fā)數(shù)據(jù). 采用一主多從的模式,主機(jī)只有一個,而從機(jī)可以有若干個。 ? ? 需要四條信號線:(SS(CS),SCK,MOSI,MOS

    2024年02月06日
    瀏覽(17)
  • FPGA實現(xiàn)SPI協(xié)議基于ADC128S022進(jìn)行模擬信號采集

    FPGA實現(xiàn)SPI協(xié)議基于ADC128S022進(jìn)行模擬信號采集

    使用vivado聯(lián)合modelsim實現(xiàn)SPI協(xié)議基于ADC128S022進(jìn)行模擬信號連續(xù)采集。 SPI是串行外設(shè)接口,是一種同步/全雙工/主從式接口。通常由四根信號線構(gòu)成: CS_N :片選信號,主從式接口,可以有多個從機(jī),用片選信號進(jìn)行從機(jī)選擇; SCLK :串行時鐘線,由主機(jī)提供給從機(jī); MISO :主機(jī)

    2024年02月14日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包