中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

商標(biāo)圖案大全大圖 logo上海牛巨微seo優(yōu)化

商標(biāo)圖案大全大圖 logo,上海牛巨微seo優(yōu)化,鹽城做網(wǎng)站spider net,香港域名可以用在內(nèi)地嗎SPI是什么: SPI(Serial Peripheral Interface,串行外圍設(shè)備接口)通訊協(xié)議,是Motorola公司提出的一種同步串行接口技術(shù),是一種高速、全雙工、同步通信總線,在芯片中只占用四根管腳用來控制及數(shù)據(jù)…

SPI是什么:

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

?????? 應(yīng)用:EEPROM、FlashRTC、ADC、DSP等。

?????? 優(yōu)缺點:全雙工通信,通訊方式較為簡單,相對數(shù)據(jù)傳輸速率較沒有應(yīng)答機制確認(rèn)數(shù)據(jù)是否接收,在數(shù)據(jù)可靠性上有一定缺陷(與I2C相比)。

物理層:

SCK (Serial Clock):時鐘信號線,用于同步通訊數(shù)據(jù)

MOSI (Master Output Slave Input):主設(shè)備輸出/從設(shè)備輸入引腳

MISO (Master InputSlave Output):主設(shè)備輸入/從設(shè)備輸出引腳

𝐶𝑆(CS)?? (Chip Select):片選信號線,也稱為CS_N。

協(xié)議層:?

spi通訊協(xié)議有四種模式:模式0和模式3,從設(shè)備在sck上升沿采樣。

模式1和模式2在時鐘下降沿采樣。

模式0和模式1,在cs_n==1時,sck==0。

模式2和模式3,在cs_n==1時,sck==1。

比較常用的就是模式0和模式3。

flash相關(guān)資料:

芯片手冊是必須要看的。

模塊框圖:

狀態(tài)機:

時序圖:

?代碼:

module spi (input       wire            sys_clk     ,input       wire            sys_rst_n   , input       wire            key_start   ,output      wire            mosi        ,output      wire            miso        ,output      reg             cs_n        ,output      reg             sck 
);// parameter parameter   COMD_W  = 8'h06   ,COMD_B  = 8'hc7   ;parameter   IDLE    = 4'b0001 ,WREN    = 4'b0010 ,WEL     = 4'b0100 ,BE      = 4'b1000 ;// wire signal deginewire                IDLEtoWREN; wire                WRENtoWEL ;  wire                WRENtoBE  ;   wire                BEtoIDLE  ;   // reg signal definereg     [3:0]       state_c   ;reg     [3:0]       state_n   ;reg     [3:0]       cnt_20ns  ;reg     [3:0]       cnt_bit   ;reg                 flag_bit  ;reg                 f_b_reg   ; // flag_bit_reg的縮寫reg     [7:0]       comd      ;
/****************************************************************************/// 三段式狀態(tài)機// 現(xiàn)態(tài)與次態(tài)描述// state_calways @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) state_c <= IDLE ;elsestate_c <= state_n ;end// state_nalways @(*) begincase (state_c)IDLE   :if(IDLEtoWREN)state_n <= WREN ;else state_n <= IDLE ;WREN   :if(WRENtoWEL)state_n <= WEL  ;else state_n <= WREN ;WEL    :if(WRENtoBE)state_n <= BE   ;else state_n <= WEL  ;BE     :if(BEtoIDLE)state_n <= IDLE ;else state_n <= BE   ;default:    state_n <= IDLE ;endcaseend// 狀態(tài)轉(zhuǎn)移描述assign  IDLEtoWREN  = ( state_c == IDLE) && ( key_start     ) ;assign  WRENtoWEL   = ( state_c == WREN) && ( f_b_reg       ) ;assign  WRENtoBE    = ( state_c == WEL ) && ( cnt_20ns == 6 ) ;assign  BEtoIDLE    = ( state_c == BE  ) && ( f_b_reg       ) ;// 相關(guān)信號描述// reg     [3:0]       cnt_20ns  ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) cnt_20ns <= 4'd0 ;else case (state_c)IDLE :  cnt_20ns <= 4'd0 ;WREN :  if(cnt_20ns || f_b_reg)cnt_20ns <= 4'd0 ;else cnt_20ns <= cnt_20ns + 1'b1 ;WEL  :  if(cnt_20ns == 6) // 60x20ns==120nscnt_20ns <= 4'd0 ;elsecnt_20ns <= cnt_20ns + 1'b1 ;BE   :    if(cnt_20ns || f_b_reg)cnt_20ns <= 4'd0 ;else cnt_20ns <= cnt_20ns + 1'b1 ;default:    cnt_20ns <= 4'd0 ;endcaseend// reg     [3:0]       cnt_bit   ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)cnt_bit <= 4'd0 ;else case (state_c)IDLE :  cnt_bit <= 4'd0 ;WREN :  if(!cnt_20ns && sck && cnt_bit == 7)cnt_bit <= 4'd0 ;else if(!cnt_20ns && sck)cnt_bit <= cnt_bit + 1'b1 ;WEL  :  cnt_bit <= 4'd0 ;BE   :  if(!cnt_20ns && sck && cnt_bit == 7)cnt_bit <= 4'd0 ;else if(!cnt_20ns && sck)cnt_bit <= cnt_bit + 1'b1 ;default:    cnt_bit <= 4'd0 ;endcaseend// reg                 flag_bit  ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) flag_bit <= 1'b0 ;elsecase (state_c)IDLE :  flag_bit <= 1'b0 ;WREN :  if(cnt_bit == 7 && sck && !cnt_20ns)flag_bit <= 1'b1 ;else flag_bit <= flag_bit ;WEL  :  flag_bit <= 1'b0 ;BE   :  if(cnt_bit == 7 && sck && !cnt_20ns)flag_bit <= 1'b1 ;else flag_bit <= flag_bit ;default: flag_bit <= 1'b0 ;endcaseend// reg                 f_b_reg   ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) beginf_b_reg <= 1'b0 ;end else beginf_b_reg <= flag_bit ;endend// reg     [7:0]       comd      ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)comd <= 8'd0 ;elsecase (state_c)IDLE :  comd <= 8'd0 ;WREN :  if(cnt_20ns && sck)comd <= (COMD_W << cnt_bit) ;else if(!cnt_bit)comd <= COMD_W ;else comd <= comd ;WEL  :  comd <= 8'd0 ;BE   :  if(cnt_20ns && sck)comd <= (COMD_B << cnt_bit) ;else if(!cnt_bit)comd <= COMD_B ;else comd <= comd ;default :   comd <= 8'd0 ;endcase end// output signal// wire            mosi        ,assign mosi = comd[7] ;// wire            miso        ,assign miso = 1'bz ;// reg             cs_n        ,always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) begincs_n <= 1'b1 ;end else begincase (state_c)IDLE :  if(key_start)cs_n <= 1'b0 ;else cs_n <= 1'b1 ;WREN :  if(f_b_reg)cs_n <= 1'b1 ;else cs_n <= cs_n ;WEL  :  if(cnt_20ns == 6) cs_n <= 1'b0 ;else cs_n <= cs_n ;BE   :  if(f_b_reg)cs_n <= 1'b1 ;else cs_n <= cs_n ;default:    cs_n <= 1'b1 ;endcaseendend// reg             sck always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)sck <= 1'b0 ;else case (state_c)IDLE :  sck <= 1'b0 ;WREN :  if(cnt_20ns)sck <= ~sck ;else sck <= sck  ;WEL  :  sck <= 1'b0 ;BE   :  if(cnt_20ns)sck <= ~sck ;else sck <= sck  ;default:    sck <= 1'b0 ;endcaseendendmodule

?

module key_filter
#(parameter MAX_CNT_20MS = 20'd100_0000 
)(input           wire    sys_clk     ,input           wire    sys_rst_n   ,input           wire    key_in      ,output          wire    key_out     
);reg     key_r_0 ;reg     key_r_1 ;wire    nege    ;wire    pose    ;reg     [19:00]     cnt_20ms     ;wire                add_cnt_20ms ;wire                end_cnt_20ms ;reg                 add_cnt_flag ;// key_r_0 key_r_1 always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) beginkey_r_0 <= 1'b1 ;end else beginkey_r_0 <= key_in ;endendalways @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) beginkey_r_1 <= 1'b1 ;end else beginkey_r_1 <= key_r_0 ;endend// nege poseassign nege = ~key_r_0 &&  key_r_1 ;assign pose =  key_r_0 && ~key_r_1 ;// add_cnt_flagalways @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) beginadd_cnt_flag <= 1'b0 ;end else beginif(nege) beginadd_cnt_flag <= 1'b1 ;end else beginif( pose || end_cnt_20ms ) beginadd_cnt_flag <= 1'b0 ;end else beginadd_cnt_flag <= add_cnt_flag ;endend endend// cnt_20ms add_cnt_20ms end_cnt_20msalways @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) begincnt_20ms <= 20'd0 ;end else beginif(add_cnt_20ms) beginif(end_cnt_20ms) begincnt_20ms <= 20'd0 ;end else begincnt_20ms <= cnt_20ms + 20'd1 ;endend else begincnt_20ms <= 20'd0 ;endendendassign add_cnt_20ms = add_cnt_flag ;assign end_cnt_20ms = add_cnt_20ms && cnt_20ms == ( MAX_CNT_20MS - 1'b1 ) ;// key_out// always @(posedge sys_clk or negedge sys_rst_n) begin// // always @(*) begin // 這樣的話 會綜合成 數(shù)據(jù)選擇器//     if(~sys_rst_n) begin//         key_out <= 1'b0 ;//     end else begin//         if(end_cnt_20ms) begin//             key_out <= 1'b1 ;//         end else begin//             key_out <= 1'b0 ;//         end//     end// endassign key_out = end_cnt_20ms ;
endmodule
module top(input       wire            sys_clk     ,input       wire            sys_rst_n   ,input       wire            key_in      ,output      wire            cs_n        ,output      wire            sck         ,output      wire            mosi        
);// 例化間連線wire            key_flag ;key_filter key_filter_inst(.sys_clk                    ( sys_clk   ) ,.sys_rst_n                  ( sys_rst_n ) ,.key_in                     ( key_in    ) ,.key_out                    ( key_flag  )     
);spi spi_inst(.sys_clk                    ( sys_clk   ) ,.sys_rst_n                  ( sys_rst_n ) ,.key_start                  ( key_flag  ) ,.mosi                       ( mosi      ) ,.miso                       (           ) ,.cs_n                       ( cs_n      ) ,.sck                        ( sck       )
);endmodule
`timescale 1ns/1ns
module test_top();reg             sys_clk     ;reg             sys_rst_n   ;reg             key_in      ;wire            cs_n        ;wire            sck         ;wire            mosi        ;wire            miso        ;top top_inst(.sys_clk                ( sys_clk   ) ,.sys_rst_n              ( sys_rst_n ) ,.key_in                 ( key_in    ) ,.cs_n                   ( cs_n      ) ,.sck                    ( sck       ) ,.mosi                   ( mosi      ) ,.miso                   ( miso      )
);parameter CYCLE = 20 ;defparam  top_inst.key_filter_inst.MAX_CNT_20MS = 20'd100 ;initial beginsys_clk = 1'b1 ;sys_rst_n <= 1'b0 ;key_in    <= 1'b1 ;#(CYCLE) ;sys_rst_n <= 1'b1 ;#(CYCLE * 30) ;key_in <= 1'b0 ;#(CYCLE * 130) ;key_in <= 1'b1 ;#(CYCLE * 100) ;$stop;endalways #(CYCLE/2) sys_clk = ~sys_clk ;endmodule

?仿真波形:

?上板驗證:

先往板子上固化一個流水燈程序,也就是把生成的.jic文件,寫進flash。

重啟開發(fā)板,流水燈正常工作,說明程序?qū)戇M了flash。

然后把全擦除程序(.sof),寫進開發(fā)板。

重啟開發(fā)板,流水燈效果消失。

說明上板成功。

http://www.risenshineclean.com/news/22970.html

相關(guān)文章:

  • 中國建設(shè)銀行網(wǎng)站會員用戶名合肥網(wǎng)站制作推廣
  • 微信群公告如何做網(wǎng)站鏈接好口碑的關(guān)鍵詞優(yōu)化
  • 成都網(wǎng)站關(guān)鍵排名2023b站免費推廣入口
  • 巢湖商城網(wǎng)站建設(shè)seo實戰(zhàn)密碼在線閱讀
  • 廣州網(wǎng)站建設(shè)外包接推廣怎么收費
  • 網(wǎng)站開發(fā)實訓(xùn)意義南寧今日頭條最新消息
  • 做黑網(wǎng)站賺錢嗎百度站長平臺
  • 網(wǎng)絡(luò)運維工程師證湖南優(yōu)化公司
  • 怎么做用戶調(diào)研網(wǎng)站重慶專業(yè)做網(wǎng)站公司
  • 商丘做網(wǎng)站漢獅網(wǎng)絡(luò)廣州百度關(guān)鍵詞推廣
  • 網(wǎng)站正在建設(shè)中的圖片素材什么是seo搜索引擎優(yōu)化
  • 鄭州市有做網(wǎng)站的嗎東莞seo廣告宣傳
  • 貴陽建設(shè)工程招投標(biāo)網(wǎng)站谷歌推廣代理商
  • 網(wǎng)站建設(shè)中圖標(biāo)網(wǎng)絡(luò)營銷方式方法
  • 西安做企業(yè)網(wǎng)站網(wǎng)站點擊軟件排名
  • 婚慶攝影企業(yè)網(wǎng)站企業(yè)seo顧問服務(wù)
  • 電腦視頻制作軟件搜索引擎優(yōu)化的定義
  • 優(yōu)惠券網(wǎng)站開發(fā)哪家好軟件推廣的渠道是哪里找的
  • 標(biāo)題設(shè)計網(wǎng)站培訓(xùn)網(wǎng)站
  • 徐州做英文網(wǎng)站的公司廣告營銷留電話網(wǎng)站
  • 網(wǎng)站開發(fā)的流程圖和原型圖百度關(guān)鍵詞優(yōu)化怎么做
  • wordpress 前端傳文件廣州seo優(yōu)化推廣
  • 網(wǎng)站優(yōu)化哪家好網(wǎng)絡(luò)營銷做的好的企業(yè)
  • 模板板網(wǎng)站關(guān)鍵詞生成器在線
  • 硬件開發(fā)工資高嗎重慶排名seo公司
  • 計算機網(wǎng)站的開發(fā)流程湖南百度推廣
  • 門戶網(wǎng)站建設(shè)美麗李守洪
  • 房屋自建設(shè)計哪個網(wǎng)站好網(wǎng)絡(luò)推廣seo教程
  • 怎么制作網(wǎng)站彈出廣告湖人最新消息
  • 營銷網(wǎng)站建設(shè)公司哪家好域名注冊商怎么查