国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用Modelsim仿真I2C控制器

友晶FPGA ? 來源:友晶FPGA ? 2026-01-10 14:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

ModelSim是Model Technology(Mentor Graphics的子公司)的HDL硬件描述語言的仿真軟件。該軟件可以用來實現對設計的VHDL、Verilog HDL 或是兩種語言混合的程序進行仿真。這里的仿真是對設計進行功能仿真(也稱之為前仿真),其目的是驗證電路功能是否符合設計要求。

本篇主要是對I2C_Controller模塊進行功能仿真。test_bench的核心是模擬FPGA給出數據24'h729803,同時也模擬I2C外設來接收該數據并給出應答反饋。

505e9206-eb67-11f0-92de-92fbcf53809c.png



1. 首先用Quartus打開HDMI_block_move工程(HDMI_block_move工程下載鏈接:https://pan.baidu.com/s/1XxFFj-3UTfB_Er-yz0f_Cg提取碼: tera),然后在該工程路徑下新建一個Verilog test bench仿真文件。右擊File——New, 選擇Verilog HDL File,然后點擊OK:

50c61ad4-eb67-11f0-92de-92fbcf53809c.png

2. 將下面代碼拷貝到新建的.v文件當中:

`timescale 1ns/1ps


module tb_I2C_Controller();
 // 輸出信號定義
 regCLOCK;
 reg [23:0]I2C_DATA;
 regGO;
 regRESET;


// 雙向信號定義(I2C_SDAT需要上拉電阻模擬總線特性)
 wireI2C_SDAT;
 reg sdat_drive; // 用于模擬從機應答的驅動信號


// 輸入信號定義
 wireI2C_SCLK;
 wireEND;
 wireACK;


// 上拉電阻模擬(I2C總線默認高電平)
 assignI2C_SDAT=sdat_drive?1'bz :1'b0;


// 例化被測試模塊
I2C_Controlleruut (
 .CLOCK(CLOCK),
 .I2C_DATA(I2C_DATA),
 .GO(GO),
 .RESET(RESET),
 .I2C_SDAT(I2C_SDAT),
 .I2C_SCLK(I2C_SCLK),
 .END(END),
 .ACK(ACK)
);


reg [7:0] cnt_I2Cclk;  
// 時鐘生成(100MHz,周期10ns)
initial begin
CLOCK=0;
 forever #5CLOCK=~CLOCK;
end


// 主仿真過程
initial begin
// 初始化信號
I2C_DATA=24'h729803; // 待寫入的目標數據
GO=0;
RESET=0;
 sdat_drive=1; // 初始釋放總線(上拉為高)


// 復位過程
 #20RESET=1; // 20ns后釋放復位


// 等待模塊進入空閑狀態
 #50;


// 啟動I2C寫入過程
GO=1;
 #10GO=0;   // 提供一個時鐘周期的GO脈沖
 cnt_I2Cclk=0;   
// 模擬從機應答(在每個字節傳輸的第9個時鐘周期拉低SDA)
// 監控時鐘線,在需要應答時拉低SDA
 forever @(negedgeI2C_SCLK) begin
  cnt_I2Cclk<=?cnt_I2Cclk?+1?;
? ??if?(cnt_I2Cclk?==?29) begin
? ? ??$stop;
? ? end
? ??if?(uut.CNT?==?8) begin ?// 第9位傳輸時
? ? ? sdat_drive?=?0; ?// 產生應答信號(低電平)
? ? end?
? ??else?begin
? ? ? sdat_drive?=?1; ?// 其他時間釋放總線
? ? end
? end ? ? ? ?
end
endmodule


3. 點擊Save按鈕,將文件保存為tb_I2C_Controller.v。
4. 安裝Quartus軟件的時候也記得安裝Modelsim 工具(這些安裝步驟在后期文章里面會發布),接下來要將Modelsim 的安裝路徑設置一下就才可以在仿真時自動調用指定的仿真工具。首先是在Tools菜單下面找到Options:

513c3e44-eb67-11f0-92de-92fbcf53809c.png

5. 在彈出的對話框中選擇EDA Tool Options ,點擊...指定軟件路徑: D:intelFPGA_lite17.1modelsim_asewin32aloem:

51982fba-eb67-11f0-92de-92fbcf53809c.png

6. 接下來設置仿真文件路徑。點擊Assignments——Settings:

51f5e86c-eb67-11f0-92de-92fbcf53809c.png

7. 點擊 Simulation,仿真工具選擇ModelSim-Altera, 然后點選Compile test bench圓圈,點擊Test Benches...

5279a6fc-eb67-11f0-92de-92fbcf53809c.png

8. 點擊New...

52d8e554-eb67-11f0-92de-92fbcf53809c.png

9. 然后填寫Test bench name 名稱為tb_I2C_Controller,接著點擊File name處對應的...按鈕:

533111a2-eb67-11f0-92de-92fbcf53809c.png

10. 選擇tb_I2C_Controller.v文件,然后點擊Open:

539dd300-eb67-11f0-92de-92fbcf53809c.png


11. 接著點擊Add將仿真文件添加到Test Bench,依次點擊OK、OK、Apply和 OK退出窗口:

53f9e064-eb67-11f0-92de-92fbcf53809c.png

54574bf0-eb67-11f0-92de-92fbcf53809c.png

54c91c9e-eb67-11f0-92de-92fbcf53809c.png

12. 在仿真之前要先點擊Start Analysis&Synthesis按鈕進行分析和綜合:

5524db42-eb67-11f0-92de-92fbcf53809c.png

13. 再點擊Tools——Run Simulation Tool_RTL Simulation進行仿真:

5586c80c-eb67-11f0-92de-92fbcf53809c.png

14. 點擊Zoom Full按鈕將顯示全部波形。

55f96fce-eb67-11f0-92de-92fbcf53809c.png

15. 最后波形生成如下:

5655eeac-eb67-11f0-92de-92fbcf53809c.png

通過波形可以看到,用于觸發I2C寫操作的GO信號拉高一個時鐘周期后,I2C開始寫數據的操作。現在要寫的數據是24'h729803,二進制是0111_0010_1001_1000_0000_0011, 將波形放大分三段截圖將看到如下內容:

56b4aabe-eb67-11f0-92de-92fbcf53809c.png

571e36b4-eb67-11f0-92de-92fbcf53809c.png

5779bc64-eb67-11f0-92de-92fbcf53809c.png

數據發送的狀態循環是ST=2 → ST=3 → ST=4 → ST=5 → ST=2,這個循環發送1位數據,共循環9次(8位數據+ACK),第9位(1'b1)是確保在第9個時鐘周期主機釋放SDA總線。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1660

    文章

    22408

    瀏覽量

    636229
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1556

    瀏覽量

    131218
  • ModelSim
    +關注

    關注

    5

    文章

    175

    瀏覽量

    49277
  • 仿真軟件
    +關注

    關注

    21

    文章

    281

    瀏覽量

    31837

原文標題:6-DE10-Nano的HDMI方塊移動案例——使用Modelsim仿真I2C控制器

文章出處:【微信號:友晶FPGA,微信公眾號:友晶FPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于FPGA的I2C控制模塊設計

    I2C_WRITE_WDATA.v模塊實現I2C寫時序,I2C_Controller (I2C控制器)例化了
    的頭像 發表于 12-26 09:48 ?4883次閱讀
    基于FPGA的<b class='flag-5'>I2C</b><b class='flag-5'>控制</b>模塊設計

    基于FPGA的I2C SLAVE模式總線的設計方案

    。經過實際應用,證實了本方案操作簡便,實用性強。##I2C SLAVE 控制器的接口部分主要包括,信號異步時鐘域的轉換。輸入濾波,用來抑制毛刺。及SDA 線的雙向轉換。
    發表于 02-26 11:39 ?2.1w次閱讀

    新手求助,I2C總線從機的應答信號不能用modelsim仿真出?

    關于I2C總線,I2C總線從機的應答信號是不是不能用modelsim直接仿真出哦?所謂從機將SDA拉低的應答信號,是不是要在實際的電路里才有,要么就用軟件編程模擬從機?反正我直接用編
    發表于 04-15 13:04

    實現I2C總線控制器的VHDL源代碼

    I2C總線控制器 altera提供 The I2C Controller was designed for the MC68307 uC, provides a simplified
    發表于 05-20 10:25 ?251次下載

    LM3S系列微控制器I2C應用文檔

    LM3S系列微控制器I2C應用文檔基于LM5749的I2C從機功能,模擬24C02傳輸協議操作。
    發表于 04-03 14:29 ?52次下載

    基于Verilog的I2C控制器的設計與綜合

    為滿足嵌入式系統中專用芯片功能不能達到系統要求的現狀,設計出一種功能可擴展的I2C slave控制器,這種控制器與傳統的專用I2C芯片不同。專用的I
    發表于 10-25 16:58 ?60次下載
    基于Verilog的<b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>的設計與綜合

    I2C總線控制器的工作原理及EEPROM的Linux驅動程序的設計

    I2C (Inter-Integrated Circuit1總線是一種由Philips公司開發的2線式串行總線,用于連接微控制器及其外圍設備。它是同步通信的一種特殊形式,具有接口線少、控制
    發表于 10-26 15:37 ?7次下載
    <b class='flag-5'>I2C</b>總線<b class='flag-5'>控制器</b>的工作原理及EEPROM的Linux驅動程序的設計

    使用FPGA實現I2C總線主機控制器的應用實例資料免費下載

    I2C總線協議的串行數據,實現I2C主機控制器功能。同時,應用MaxPlus軟件對設計進行時序仿真,分析設計可行性與存在的不足,該設計能夠滿足預定目標,拓展FPGA應用。
    發表于 08-19 08:00 ?3次下載
    使用FPGA實現<b class='flag-5'>I2C</b>總線主機<b class='flag-5'>控制器</b>的應用實例資料免費下載

    Firefly-RK3128主板I2C控制器

    Firefly-RK3128 開發板上有 4 個片上 I2C 控制器。本文主要描述如何在該開發板上配置 I2C
    的頭像 發表于 11-29 08:47 ?2170次閱讀
    Firefly-RK3128主板<b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>

    fireflyFace-RK3399主板I2C控制器介紹

    Face-RK3399 開發板上有 9 個片上 I2C 控制器
    的頭像 發表于 12-04 09:17 ?3729次閱讀
    fireflyFace-RK3399主板<b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>介紹

    淺談PCA9564 I2C 總線控制器評估板

    PCA9564 I2C 總線控制器連接在 P89LV51RD2I2C 總線之間。 飛利浦 PCA9531 I2C 8 位 LED 調
    的頭像 發表于 06-17 17:26 ?4434次閱讀
    淺談PCA9564 <b class='flag-5'>I2C</b> 總線<b class='flag-5'>控制器</b>評估板

    i2c總線用來做什么_i2c總線數據傳輸過程

    I2C總線控制器為微控制器或微處理提供控制I2C總線的接口,它
    發表于 11-24 14:16 ?8579次閱讀

    硬件I2C與模擬I2C

    配置;而軟件I2C是沒有寄存這個概念的。 軟件I2C一般是使用GPIO管腳,用軟件控制SCL,SDA線輸出高低電平,模擬i2c協議的時序
    發表于 12-28 19:14 ?82次下載
    硬件<b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>

    Linux I2C驅動入門知識科普

    I2C 總線驅動, I2C總線驅動就是SOC的 I2C控制器驅動,也叫做 I2C適配器驅動。
    的頭像 發表于 12-29 13:59 ?2668次閱讀

    I2C控制器驅動介紹

    控制器驅動 I2C 總線驅動重點是 I2C 適配器驅動,這里要用到兩個重要的數據結構:i2c_adapter 和 i2c_algorithm
    的頭像 發表于 07-22 15:38 ?2923次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>驅動介紹