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

【DDR】基于Verilog的DDR控制器的簡(jiǎn)單實(shí)現(xiàn)(一)——初始化

這篇具有很好參考價(jià)值的文章主要介紹了【DDR】基于Verilog的DDR控制器的簡(jiǎn)單實(shí)現(xiàn)(一)——初始化。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在FPGA中,大規(guī)模數(shù)據(jù)的存儲(chǔ)常常會(huì)用到DDR。為了方便用戶(hù)使用,Xilinx提供了DDR MIG IP核,用戶(hù)能夠通過(guò)AXI接口進(jìn)行DDR的讀寫(xiě)訪(fǎng)問(wèn),然而MIG內(nèi)部自動(dòng)實(shí)現(xiàn)了許多環(huán)節(jié),不利于用戶(hù)深入理解DDR的底層邏輯。
【DDR】基于Verilog的DDR控制器的簡(jiǎn)單實(shí)現(xiàn)(一)——初始化,# Xilinx入門(mén),# Verilog入門(mén),# DDR,fpga開(kāi)發(fā),Verilog,ddr,Xilinx,AMD

本文以美光(Micron)公司生產(chǎn)的DDR3芯片MT41J512M8RH-093為例,說(shuō)明DDR芯片的操作過(guò)程。
【DDR】基于Verilog的DDR控制器的簡(jiǎn)單實(shí)現(xiàn)(一)——初始化,# Xilinx入門(mén),# Verilog入門(mén),# DDR,fpga開(kāi)發(fā),Verilog,ddr,Xilinx,AMD

該芯片的datasheet可以從廠商官網(wǎng)下載得到:(https://www.micron.com/-/media/client/global/documents/products/data-sheet/dram/ddr3/4gb_ddr3l.pdf?rev=305217e2f9bd4ef48d7c6f353dfc064c),這個(gè)datasheet包含了Micron公司多款DDR芯片,這里MT41J512M8RH-093芯片對(duì)應(yīng)數(shù)據(jù)位寬×8,總?cè)萘?G(512M×8),頻率2133(-093)的產(chǎn)品,在表格中需要注意區(qū)分,不同產(chǎn)品在時(shí)序參數(shù)上會(huì)有所區(qū)別。
【DDR】基于Verilog的DDR控制器的簡(jiǎn)單實(shí)現(xiàn)(一)——初始化,# Xilinx入門(mén),# Verilog入門(mén),# DDR,fpga開(kāi)發(fā),Verilog,ddr,Xilinx,AMD

DDR芯片的使用關(guān)鍵在于令接口的信號(hào)變化滿(mǎn)足時(shí)序要求,在初始化過(guò)程中主要關(guān)注下面幾個(gè)時(shí)序參數(shù)(來(lái)自P33 Table 9: Timing Parameters Used for IDD Measurements – Clock Units與P96 Table 59: Electrical Characteristics and AC Operating Conditions for Speed Extensions (Continued))

* CK(MIN)   0.938 ns
* CL        14 CK
* RCD(MIN)  14 CK
* RC(MIN)   50 CK
* RAS(MIN)  36 CK
* RP(MIN)   14 CK
* FAW       27 CK
* RRD       6  CK
* RFC       279CK
* XPR       > max(5CK, RFC+10ns)
* MRD       > 4 CK
* MOD       > max(12 CK, 15ns)
* ZQinit    < max(512nCK, 640ns)
* DLLK      > 512 CK

從datasheet的P12頁(yè)的Fig2. Simplified State Diagram可以看到,DDR3芯片在上電(Power applied)后需要經(jīng)過(guò)一系列的初始化步驟(主要包含三個(gè)部分Reset Procedure、Initialization、ZQ Calibration),之后進(jìn)入正常工作狀態(tài)(idle)。
【DDR】基于Verilog的DDR控制器的簡(jiǎn)單實(shí)現(xiàn)(一)——初始化,# Xilinx入門(mén),# Verilog入門(mén),# DDR,fpga開(kāi)發(fā),Verilog,ddr,Xilinx,AMD

上圖中Command由多個(gè)信號(hào)的變化構(gòu)成,在初始化過(guò)程主要用到以下幾個(gè)指令。(來(lái)自P118 Table 70: Truth Table – Command)

* COMMAND     | NOP | MRS_1 | MRS_2 | MRS_3 | MRS_4 | ZQCL             
* ddr_cke     | 1 1 |  1 1  |  1 1  |  1 1  |  1 1  |  1 1   
* ddr_dqs_en  |  0  |   0   |   0   |   0   |   0   |   0    
* ddr_dq_en   |  0  |   0   |   0   |   0   |   0   |   0     
* ddr_cs_n    |  0  |   0   |   0   |   0   |   0   |   0     
* ddr_ras_n   |  1  |   0   |   0   |   0   |   0   |   1    
* ddr_cas_n   |  1  |   0   |   0   |   0   |   0   |   1    
* ddr_we_n    |  1  |   0   |   0   |   0   |   0   |   0    
* ddr_ba      | vvv |  010  |  011  |  001  |  000  |  000   
* ddr_addr    | vvv |   28  |   00  |   44  |  124  | a[10]=1      
* ddr_odt     |  0  |   0   |   0   |   0   |   0   |   0   

這里將時(shí)鐘周期取為最小時(shí)鐘周期0.938ns,對(duì)應(yīng)時(shí)鐘頻率1066.099MHz。經(jīng)過(guò)計(jì)算,Initialization階段每條指令執(zhí)行后的等待時(shí)間均不超過(guò)1us,因此這里將Initialization階段每條指令執(zhí)行后的等待時(shí)間均簡(jiǎn)化1us,最終得到的DDR3初始化代碼如下:

`timescale 1ns / 1ps
//
// Company: 
// Engineer: wjh776a68
// 
// Create Date: 01/05/2024 09:45:15 AM
// Design Name: micron_ddr
// Module Name: micron_ddr_init
// Project Name: micron_ddr
// Target Devices: vu9p
// Tool Versions: 2017.4
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//

// ddr3 x8 4Gb MT41J512M8RH-093
/****************************
*  DDR3L-2133 https://www.micron.com/-/media/client/global/documents/products/data-sheet/dram/ddr3/4gb_ddr3l.pdf?rev=305217e2f9bd4ef48d7c6f353dfc064c
* CK(MIN) 0.938 ns
* CL        14 CK
* RCD(MIN)  14 CK
* RC(MIN)   50 CK
* RAS(MIN)  36 CK
* RP(MIN)   14 CK
* FAW       27 CK
* RRD       6  CK
* RFC       279CK
* XPR       >max(5CK, RFC+10ns)
* MRD       >4CK
* MOD       >max(12CK, 15ns)
* ZQinit    <max(512nCK, 640ns)
* DLLK      >512CK
* command all p118
* initial waveform p137
*
* COMMAND     | NOP | MRS_1 | MRS_2 | MRS_3 | MRS_4 | ZQCL             
* ddr_cke     | 1 1 |  1 1  |  1 1  |  1 1  |  1 1  |  1 1   
* ddr_dqs_en  |  0  |       |       |       |       |        
* ddr_dq_en   |  0  |       |       |       |       |         
* ddr_cs_n    |  0  |   0   |   0   |   0   |   0   |   0     
* ddr_ras_n   |  1  |   0   |   0   |   0   |   0   |   1    
* ddr_cas_n   |  1  |   0   |   0   |   0   |   0   |   1    
* ddr_we_n    |  1  |   0   |   0   |   0   |   0   |   0    
* ddr_ba      | vvv |  010  |  011  |  001  |  000  |         
* ddr_addr    | vvv |   28  |   00  |   44  |  124  |  a[10]      
* ddr_odt     |  0  |       |       |       |       |        
***************************************************************/
module micron_ddr_init #(
    parameter CLK_FREQ = 1066.099, // MHz
    parameter _1MS_CYCLE = 10.0**-3 / (1.0 / (CLK_FREQ * 10**6)),
    parameter _1US_CYCLE = 10.0**-6 / (1.0 / (CLK_FREQ * 10**6)),
    parameter integer INITIAL_CYCLE = 200 * _1US_CYCLE,
    parameter integer INITIAL_STABLE_CYCLE = 500 * _1US_CYCLE,
    parameter integer FREE_CYCLE = _1US_CYCLE
) (
    output  reg [15:0]  ddr_addr,
    output  reg [2:0]   ddr_ba,
    output  reg         ddr_cas_n,
    output  reg [0:0]   ddr_ck_n,
    output  reg [0:0]   ddr_ck_p,
    output  reg [0:0]   ddr_cke,
    output  reg [0:0]   ddr_cs_n,
    output  reg [0:0]   ddr_dm,
    inout       [7:0]   ddr_dq,
    inout       [0:0]   ddr_dqs_n,
    inout       [0:0]   ddr_dqs_p,
    output  reg [0:0]   ddr_odt,
    output  reg         ddr_ras_n,
    output  reg         ddr_reset_n,
    output  reg         ddr_we_n,

    input clk

);

localparam [27:0] NOP_CMD =  {11'b11000111000, 16'h0000, 1'b0};
localparam [27:0] MRS1_CMD = {11'b11000000010, 16'h0028, 1'b0};
localparam [27:0] MRS2_CMD = {11'b11000000011, 16'h0000, 1'b0};
localparam [27:0] MRS3_CMD = {11'b11000000001, 16'h0044, 1'b0};
localparam [27:0] MRS4_CMD = {11'b11000000000, 16'h0124, 1'b0};
localparam [27:0] ZQCL_CMD = {11'b11000110000, 16'h0400, 1'b0};

reg ddr_cke_p1, ddr_cke_p2;
reg ddr_dqs_i, ddr_dqs_o, ddr_dqs_en;
reg ddr_dq_i, ddr_dq_o, ddr_dq_en;

    OBUFDS OBUFDS_ck (
      .O(ddr_ck_p),   // 1-bit output: Diff_p output (connect directly to top-level port)
      .OB(ddr_ck_n), // 1-bit output: Diff_n output (connect directly to top-level port)
      .I(clk)    // 1-bit input: Buffer input
   );
   
   IOBUFDS #(
      .DQS_BIAS("FALSE")  // (FALSE, TRUE)
   )
   IOBUFDS_dqs_inst (
      .O(ddr_dqs_o),     // 1-bit output: Buffer output
      .I(ddr_dqs_i),     // 1-bit input: Buffer input
      .IO(ddr_dqs_p),   // 1-bit inout: Diff_p inout (connect directly to top-level port)
      .IOB(ddr_dqs_n), // 1-bit inout: Diff_n inout (connect directly to top-level port)
      .T(ddr_dqs_en)      // 1-bit input: 3-state enable input
   );
   
   IOBUF IOBUF_dq_inst (
     .O(ddr_dq_o),   // 1-bit output: Buffer output
     .I(ddr_dq_i),   // 1-bit input: Buffer input
     .IO(ddr_dq), // 1-bit inout: Buffer inout (connect directly to top-level port)
     .T(ddr_dq_en)    // 1-bit input: 3-state enable input
  );
  
  ODDRE1 #(
      .IS_C_INVERTED(1'b1),  // Optional inversion for C
      .IS_D1_INVERTED(1'b0), // Unsupported, do not use
      .IS_D2_INVERTED(1'b0), // Unsupported, do not use
      .SRVAL(1'b0)           // Initializes the ODDRE1 Flip-Flops to the specified value (1'b0, 1'b1)
   )
   ODDRE1_cke_inst (
      .Q(ddr_cke),   // 1-bit output: Data output to IOB
      .C(clk),   // 1-bit input: High-speed clock input
      .D1(ddr_cke_p1), // 1-bit input: Parallel data input 1
      .D2(ddr_cke_p2), // 1-bit input: Parallel data input 2
      .SR(1'b0)  // 1-bit input: Active High Async Reset
   );

//OBUFDS OBUFDS_dqs (
//      .O(ddr_dqs_p),   // 1-bit output: Diff_p output (connect directly to top-level port)
//      .OB(ddr_dqs_n), // 1-bit output: Diff_n output (connect directly to top-level port)
//      .I(ddr_dqs)    // 1-bit input: Buffer input
//   );

    reg [15:0]  ddr_addr_r;
    reg [2:0]   ddr_ba_r;
    reg         ddr_cas_n_r;
    reg [0:0]   ddr_cs_n_r;
    reg [0:0]   ddr_dm_r; // no ref
    reg [0:0]   ddr_odt_r;
    reg         ddr_ras_n_r;
    reg         ddr_we_n_r;
    reg         ddr_dq_en_r; 
    reg         ddr_dqs_en_r; 
    
   initial begin
       {ddr_cke_p2, ddr_cke_p1, ddr_dqs_en, ddr_dq_en, ddr_cs_n, ddr_ras_n, ddr_cas_n, ddr_we_n, ddr_ba, ddr_addr, ddr_odt} <= NOP_CMD;
       {ddr_cke_p2, ddr_cke_p1, ddr_dqs_en_r, ddr_dq_en_r, ddr_cs_n_r, ddr_ras_n_r, ddr_cas_n_r, ddr_we_n_r, ddr_ba_r, ddr_addr_r, ddr_odt_r} <= NOP_CMD;
   end

    always @(negedge clk) begin
        ddr_addr  <=  ddr_addr_r  ;
        ddr_ba      <=  ddr_ba_r    ;
        ddr_cas_n  <=  ddr_cas_n_r ;
        ddr_cs_n  <=  ddr_cs_n_r  ;
        ddr_dm      <=  ddr_dm_r    ;
        ddr_odt      <=  ddr_odt_r   ;
        ddr_ras_n  <=  ddr_ras_n_r ;
        ddr_we_n  <=  ddr_we_n_r  ;
        ddr_dq_en   <=  ddr_dq_en_r;
        ddr_dqs_en  <=  ddr_dqs_en_r;

    end


   reg [5:0] cs = 0, ns;
   reg [31:0]  initial_cnt = 0;
   reg [31:0]  initial_stable_cnt = 0;
   reg [31:0]  freerun_cnt = 0;
   reg [3:0]   initial_cmd_ptr = 0;
   reg [27:0] initial_cmd_seq[0:5] = '{NOP_CMD, MRS1_CMD, MRS2_CMD, MRS3_CMD, MRS4_CMD, ZQCL_CMD};
   reg initial_finish = 0;

   always @(negedge clk) begin
       cs <= ns;
   end

   always @(*) begin
       case (cs)
       0: begin
           if (initial_cnt == INITIAL_CYCLE) begin // wait 200us
               ns = 1;
           end else begin
               ns = 0;
           end
       end
       1: begin // wait 500us 
           if (initial_stable_cnt == INITIAL_STABLE_CYCLE) begin // wait 500us
               ns = 2;
           end else begin
               ns = 1;
           end
       end
       2: begin
           ns = 3;
       end
       3: begin
           if (freerun_cnt == FREE_CYCLE) begin
               if (initial_finish) begin
                   ns = 4;
               end else begin
                   ns = 2;
               end
           end else begin
               ns = 3;
           end
       end
       4: begin
           // finish initial, enter idle state
       end
       default: begin
           ns = 0;
       end
       endcase
   end

   always @(negedge clk) begin
       case (ns)
       0: begin
           initial_cnt <= initial_cnt + 1;
       end
       default: begin
           initial_cnt <= 0;
       end
       endcase
   end

   always @(negedge clk) begin
       case (ns)
       1: begin
           initial_stable_cnt <= initial_stable_cnt + 1;
       end
       default: begin
           initial_stable_cnt <= 0;
       end
       endcase
   end

   always @(negedge clk) begin
       case (ns)
       3: begin
           freerun_cnt <= freerun_cnt + 1;
       end
       default: begin
           freerun_cnt <= 0;
       end
       endcase
   end

   always @(negedge clk) begin
       case (ns)
       2: begin
           if (initial_cmd_ptr == 6 - 1) begin
               initial_finish <= 1;
           end else begin
               initial_finish <= 0;
           end
           initial_cmd_ptr <= initial_cmd_ptr + 1;
       end
       endcase
   end


   always @(negedge clk) begin
       case (ns)
       0: begin
           ddr_reset_n <= 1'b0;
           {ddr_cke_p2, ddr_cke_p1}    <= 2'b0;
           ddr_dqs_en_r <= 1'b0;
           ddr_dq_en_r  <= 1'b0;
       end
       1: begin
           ddr_reset_n <= 1'b1;
           {ddr_cke_p2, ddr_cke_p1}    <= 2'b0;
           ddr_dqs_en_r <= 1'b0;
           ddr_dq_en_r <= 1'b0;
       end
       2: begin
           {ddr_cke_p2, ddr_cke_p1, ddr_dqs_en_r, ddr_dq_en_r, ddr_cs_n_r, ddr_ras_n_r, ddr_cas_n_r, ddr_we_n_r, ddr_ba_r, ddr_addr_r, ddr_odt_r} <= initial_cmd_seq[initial_cmd_ptr];
       end
       3: begin
           {ddr_cke_p2, ddr_cke_p1, ddr_dqs_en_r, ddr_dq_en_r, ddr_cs_n_r, ddr_ras_n_r, ddr_cas_n_r, ddr_we_n_r, ddr_ba_r, ddr_addr_r, ddr_odt_r} <= NOP_CMD;
       end
       default: begin
           ddr_reset_n <= 1'b1;
       end
       endcase
   end


endmodule

上述代碼已在Vivado 2017.4中進(jìn)行了仿真測(cè)試,可替換ddr示例工程中的example_top自行仿真。
【DDR】基于Verilog的DDR控制器的簡(jiǎn)單實(shí)現(xiàn)(一)——初始化,# Xilinx入門(mén),# Verilog入門(mén),# DDR,fpga開(kāi)發(fā),Verilog,ddr,Xilinx,AMD
下一節(jié) 【DDR】基于Verilog的DDR控制器的簡(jiǎn)單實(shí)現(xiàn)(二)——寫(xiě)操作文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-786660.html

到了這里,關(guān)于【DDR】基于Verilog的DDR控制器的簡(jiǎn)單實(shí)現(xiàn)(一)——初始化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 基于FPGA的4x4矩陣鍵盤(pán)控制器verilog開(kāi)發(fā)實(shí)現(xiàn)

    基于FPGA的4x4矩陣鍵盤(pán)控制器verilog開(kāi)發(fā)實(shí)現(xiàn)

    歡迎訂閱《FPGA學(xué)習(xí)入門(mén)100例教程》、《MATLAB學(xué)習(xí)入門(mén)100例教程》 目錄 一、理論基礎(chǔ) 二、核心程序 三、測(cè)試結(jié)果 ? ? ? ?基于FPGA的4x4矩陣鍵盤(pán)控制器是一種使用FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)來(lái)實(shí)現(xiàn)對(duì)4x4矩陣鍵盤(pán)進(jìn)行控制的設(shè)備。該控制器能夠有效地降低硬件資源的使用,提高系

    2024年02月11日
    瀏覽(21)
  • 基于AHB協(xié)議的SRAM控制器的Verilog實(shí)現(xiàn)(詳解代碼)(一)——sram_core的實(shí)現(xiàn)

    基于AHB協(xié)議的SRAM控制器的Verilog實(shí)現(xiàn)(詳解代碼)(一)——sram_core的實(shí)現(xiàn)

    目錄 ?一、sramc(sram_controller)的總框架和模塊劃分 Features of sramc 結(jié)構(gòu)框圖和信號(hào)描述 二、sram_core的Verilog實(shí)現(xiàn) 動(dòng)手開(kāi)敲前的構(gòu)思 Verilog代碼和代碼分析 三、sram_core的仿真驗(yàn)證 下載鏈接 sram因?yàn)槠涓咦x寫(xiě)速度常常作為CPU和嵌入式IC的緩存,是一個(gè)數(shù)字系統(tǒng)中必不可少的存在,因此

    2024年01月16日
    瀏覽(29)
  • 【FPGA】十三、Vivado MIG IP核實(shí)現(xiàn)DDR3控制器(1)

    【FPGA】十三、Vivado MIG IP核實(shí)現(xiàn)DDR3控制器(1)

    文章目錄 前言 一、DDR3基礎(chǔ)知識(shí) 二、MIG ?IP核的配置 三、DDR3?IP核用戶(hù)端接口時(shí)序 1、DDR3 IP核接口說(shuō)明 2、DDR3 IP核讀寫(xiě)時(shí)序 ① 寫(xiě)命令時(shí)序: ?② 寫(xiě)數(shù)據(jù)時(shí)序: ?③ 讀數(shù)據(jù)時(shí)序: 總結(jié) ? ? ? ? 我們?cè)谶M(jìn)行FPGA開(kāi)發(fā)應(yīng)用當(dāng)中,經(jīng)常會(huì)用到存儲(chǔ)器來(lái)保存數(shù)據(jù),常用的存儲(chǔ)器有RO

    2024年02月16日
    瀏覽(24)
  • m基于FPGA的FOC控制器verilog實(shí)現(xiàn),包括CLARK,PARK,PID及SVPWM,含testbench

    m基于FPGA的FOC控制器verilog實(shí)現(xiàn),包括CLARK,PARK,PID及SVPWM,含testbench

    目錄 1.算法仿真效果 2.算法涉及理論知識(shí)概要 3.MATLAB核心程序 4.完整算法代碼文件 Quartus II 12.1(64-Bit) ModelSim-Altera 6.6d?Starter Edition 仿真結(jié)果如下: 整個(gè)系統(tǒng)的結(jié)構(gòu)如下所示: 1、采集到兩相電流 2、經(jīng)過(guò)clarke變換后得到兩軸正交電流量, 3、經(jīng)過(guò)旋轉(zhuǎn)變換后得到正交的電流量

    2024年02月15日
    瀏覽(21)
  • 基于FPGA的電風(fēng)扇控制器verilog,視頻/代碼

    基于FPGA的電風(fēng)扇控制器verilog,視頻/代碼

    名稱(chēng):基于FPGA的電風(fēng)扇控制器verilog 軟件:QuartusII 語(yǔ)言:Verilog 代碼功能: 基于FPGA的電風(fēng)扇控制器 ?運(yùn)用 EDA SOPO實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)設(shè)計(jì)一個(gè)基于FPGA的電風(fēng)扇定時(shí)開(kāi)關(guān)控制器,能實(shí)現(xiàn)手動(dòng)和自動(dòng)模式之間的切換。要求:? (1)KI為電源開(kāi)關(guān)由電源開(kāi)關(guān)控制電風(fēng)扇的開(kāi)關(guān),即當(dāng)K1為高電平“

    2024年02月07日
    瀏覽(22)
  • verilog實(shí)現(xiàn)I2C控制器 (小梅哥思路)----詳細(xì)解析

    verilog實(shí)現(xiàn)I2C控制器 (小梅哥思路)----詳細(xì)解析

    模塊框圖如下所示 輸入輸出信號(hào): 整體的思路如下: 通過(guò)輸入的命令組合,完成一次8字節(jié)數(shù)據(jù)的傳輸。定義了6種命令, WR 寫(xiě)數(shù)據(jù)請(qǐng)求 (6’b000_001) STA 起始位請(qǐng)求(6’b000_010) RD 讀數(shù)據(jù)請(qǐng)求(6’b000_100) STO 停止位請(qǐng)求(6’b001_000) ACK 應(yīng)答位請(qǐng)求(6’b010_000) NACK 無(wú)應(yīng)答請(qǐng)求(

    2024年02月03日
    瀏覽(44)
  • 基于EDA的電烤箱控制器設(shè)計(jì)Verilog代碼Quartus 新起點(diǎn)FPGA開(kāi)發(fā)板

    基于EDA的電烤箱控制器設(shè)計(jì)Verilog代碼Quartus 新起點(diǎn)FPGA開(kāi)發(fā)板

    名稱(chēng):基于EDA的電烤箱控制器設(shè)計(jì)Verilog代碼Quartus? 新起點(diǎn)FPGA開(kāi)發(fā)板(文末獲?。?軟件:Quartus 語(yǔ)言:Verilog 代碼功能: 基于EDA的電烤箱控制器設(shè)計(jì) 主要研究?jī)?nèi)容 設(shè)計(jì)一個(gè)電烤箱控制器電路,要求具有三檔加熱功能,分別表示燒烤加熱為低火、中火、高火。具有復(fù)位開(kāi)關(guān)、啟動(dòng)

    2024年02月01日
    瀏覽(32)
  • 從零開(kāi)始 verilog 以太網(wǎng)交換機(jī)(二)MAC接收控制器的設(shè)計(jì)與實(shí)現(xiàn)

    從零開(kāi)始 verilog 以太網(wǎng)交換機(jī)(二)MAC接收控制器的設(shè)計(jì)與實(shí)現(xiàn)

    ??聲明: ??博主主頁(yè):王_嘻嘻的CSDN主頁(yè) ?? 從零開(kāi)始 verilog 以太網(wǎng)交換機(jī)系列專(zhuān)欄:點(diǎn)擊這里 ??未經(jīng)作者允許,禁止轉(zhuǎn)載,侵權(quán)必刪 ??關(guān)注本專(zhuān)題的朋友們可以收獲一個(gè)經(jīng)典交換機(jī)設(shè)計(jì)的全流程,包括設(shè)計(jì)與驗(yàn)證(FPGA);以太網(wǎng)MAC的基礎(chǔ)知識(shí)。新手朋友們還將獲得一個(gè)

    2024年01月19日
    瀏覽(19)
  • 紫光同創(chuàng) FPGA 開(kāi)發(fā)跳坑指南(四)—— DDR3 控制器 IP 的使用

    紫光同創(chuàng) FPGA 開(kāi)發(fā)跳坑指南(四)—— DDR3 控制器 IP 的使用

    DDR3 是一種大容量的存儲(chǔ)器件,采用了預(yù)取技術(shù)和雙邊沿采樣技術(shù),以實(shí)現(xiàn)高速數(shù)據(jù)存儲(chǔ)與讀取,在視頻處理中可以用來(lái)緩存 1?幀或多幀圖像。 目錄 一、紫光 DDR3 IP 的安裝 二、紫光 DDR3 IP 的配置 三、DDR3 IP 的使用 3.1 DDR3 寫(xiě)操作 3.2 DDR3 讀操作 ? ? ? ? 在 Pango Design Suit 中,選

    2024年01月25日
    瀏覽(28)
  • 基于Vivado軟件實(shí)現(xiàn)電梯控制器仿真設(shè)計(jì)

    基于Vivado軟件實(shí)現(xiàn)電梯控制器仿真設(shè)計(jì)

    Contents 1設(shè)計(jì)目的及要求 2 1.1設(shè)計(jì)要求 2 1.2設(shè)計(jì)H的 2 2工作原理和系統(tǒng)框圖 2 3各部分選定方案及電路組成、相關(guān)器件說(shuō)明 2 3.1各部分選定方案 2 3.2相關(guān)器件說(shuō)明 3 4調(diào)試過(guò)程 8 4.1調(diào)試步驟 8 4.2調(diào)試過(guò)程中出現(xiàn)的錯(cuò)誤及修正方案 8 5功能測(cè)試 10 6設(shè)計(jì)結(jié)論 12 7設(shè)計(jì)心得與總結(jié) 12 7.1設(shè)

    2024年02月09日
    瀏覽(34)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包