加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 六、系統(tǒng)調(diào)試與測試
    • 結(jié)論
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

基于FPGA的單目內(nèi)窺鏡定位系統(tǒng)設(shè)計(jì)(附代碼)

2023/11/28
1938
閱讀需 37 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

大俠好,歡迎來到FPGA技術(shù)江湖,江湖偌大,相見即是緣分。大俠可以關(guān)注FPGA技術(shù)江湖,在“闖蕩江湖”、"行俠仗義"欄里獲取其他感興趣的資源,或者一起煮酒言歡。

今天給大俠帶來基于FPGA的單目內(nèi)窺鏡定位系統(tǒng)設(shè)計(jì),由于篇幅較長,分三篇。今天帶來第三篇,下篇,話不多說,上貨。

這里也超鏈接前兩篇內(nèi)容。

基于FPGA的單目內(nèi)窺鏡定位系統(tǒng)設(shè)計(jì)(上)

基于FPGA的單目內(nèi)窺鏡定位系統(tǒng)設(shè)計(jì)(中)

隨著現(xiàn)科技的發(fā)展和社會(huì)的進(jìn)步,信息科技迅速發(fā)展,我們可從互聯(lián)網(wǎng)、電臺(tái)等媒體獲取大量信息?,F(xiàn)代信息的存儲(chǔ)、處理和傳輸變得越來越數(shù)字化。在人們的日常生活中,常用的計(jì)算機(jī)、電視、音響系統(tǒng)、視頻記錄設(shè)備、遠(yuǎn)程通訊電子設(shè)備無一不采用電子系統(tǒng)、數(shù)字電路系統(tǒng)。因此,數(shù)字技術(shù)的應(yīng)用越來越廣泛。尤其在通信系統(tǒng)和視頻系統(tǒng)中,數(shù)字系統(tǒng)尤為突出。而隨著FPGA的出世,數(shù)字系統(tǒng)更加受到人們青睞,它為數(shù)字系統(tǒng)的設(shè)計(jì)提供更加便捷的通道,使得數(shù)字系統(tǒng)設(shè)計(jì)可以芯片小型化,電路規(guī)模大型化,龐大的邏輯資源,可滿足各種數(shù)字系統(tǒng)設(shè)計(jì)。

隨著社會(huì)的發(fā)展,科學(xué)技術(shù)已經(jīng)應(yīng)用于各個(gè)領(lǐng)域,尤其是醫(yī)療領(lǐng)域尤為突出。而在醫(yī)療領(lǐng)域中,心臟電信號模擬器手術(shù)輔助儀器發(fā)展迅速。為了訓(xùn)練經(jīng)驗(yàn)少的醫(yī)生熟悉心臟手術(shù)的操作過程,而專門開發(fā)心臟信號模擬儀器,讓醫(yī)生迅速掌握心臟手術(shù)操作過程,成為一個(gè)經(jīng)驗(yàn)豐富心臟手術(shù)醫(yī)生。

因此,本文將于FPGA平臺(tái),以圖像處理結(jié)合信號采集原理,實(shí)現(xiàn)醫(yī)生在做心臟模擬手術(shù)操作導(dǎo)管的過程中,不需要觀察心臟內(nèi)部情況,即可獲取導(dǎo)管頭在心臟內(nèi)部信息的功能,采用內(nèi)窺鏡攝像頭采集視頻和并對導(dǎo)管頭進(jìn)行跟蹤定位,信號采集技術(shù)可將采集到的導(dǎo)管頭在心臟內(nèi)部觸碰區(qū)域的信號采集出來送到專業(yè)醫(yī)用儀器,進(jìn)行心臟3D建模。

本設(shè)計(jì)的實(shí)現(xiàn)對醫(yī)院培養(yǎng)的經(jīng)驗(yàn)少的醫(yī)生盡快掌握心臟手術(shù)操作流程很有價(jià)值,未來將可以培養(yǎng)更多從事心臟手術(shù)工作的醫(yī)學(xué)專業(yè)畢業(yè)的學(xué)生或剛剛從事這個(gè)行業(yè)的社會(huì)醫(yī)生。

第三篇內(nèi)容摘要:本篇會(huì)介紹系統(tǒng)調(diào)試與測試以及結(jié)論,包括系統(tǒng)資源性能調(diào)試與分析、系統(tǒng)功能測試等相關(guān)內(nèi)容,還會(huì)有VGA的常用分辨率參數(shù)表、整體電路圖、主要程序分享等附錄。

六、系統(tǒng)調(diào)試與測試

本設(shè)計(jì)對系統(tǒng)的性能和系統(tǒng)的功能分別進(jìn)行了測試,性能測試是對FPGA的資源利用情況和運(yùn)行速度情況進(jìn)行測試,功能測試有腐蝕算法測試,幀差算法測試,定位功能調(diào)試等。

6.1?系統(tǒng)資源性能調(diào)試與分析

本設(shè)計(jì)中,F(xiàn)PGA使用資源如圖6.1所示,組合邏輯資源使用45%,分布式寄存器資源使用23%,總的邏輯宏單元使用52%,存儲(chǔ)器單元使用了15%,一個(gè)鎖相環(huán)。EP4CE6F17C8共有2個(gè)鎖相環(huán),總邏輯宏單元使用資源小于80%。滿足設(shè)計(jì)任務(wù)需求。

圖6.1 EP4CE6F17C8資源使用情況

緩沖模塊穩(wěn)定運(yùn)行時(shí)鐘200M,可用邏輯分析儀SigalTap驗(yàn)證,驗(yàn)證結(jié)果如圖6.2和圖6.3所示。

圖6.2 SDRAM傳輸數(shù)據(jù)圖

圖6.3 SDRAM傳輸數(shù)據(jù)圖

結(jié)論:設(shè)計(jì)緩沖長度為512,緩沖節(jié)點(diǎn)在256,每次突發(fā)256個(gè)數(shù)據(jù),如圖6.2和圖6.3,在數(shù)據(jù)有效信號范圍內(nèi),傳輸數(shù)據(jù)正確。而且工作時(shí)鐘在200MHz下運(yùn)行的,基本能滿足多端點(diǎn)圖像數(shù)據(jù)緩沖需求。

6.2?系統(tǒng)功能測試

腐蝕功能測試:腐蝕前可以看到有許多孤立噪聲點(diǎn)在視頻輸出上,輸出結(jié)果如圖6.4所示,當(dāng)進(jìn)行腐蝕算法處理后孤立噪聲點(diǎn)明顯減少,輸出結(jié)果如圖6.5所示。

圖6.4 腐蝕前圖像和幀差結(jié)果

圖6.5 腐蝕后圖像和幀差結(jié)果

圖6.6 幀差結(jié)果

幀差法調(diào)試:調(diào)試過程中遇到了如下一些問題以及對應(yīng)的解決方法。

出現(xiàn)問題:

a. 移屏,整個(gè)屏幕的圖像向左方移動(dòng)一部分,圖像未失真,如圖6.6所示。

b. 幀差結(jié)果出現(xiàn)混亂,如圖6.6所示。

分析問題及解決方法:

a. 移屏問題原因分析,由于SDRAM緩沖讀寫問題,讀上一幀時(shí),還未來得及將所有數(shù)據(jù)讀完,下一幀圖像已經(jīng)來臨,SDRAM寫的優(yōu)先級高于讀優(yōu)先級,所以下一幀數(shù)據(jù)會(huì)將上一幀圖像部分?jǐn)?shù)據(jù)覆蓋導(dǎo)致每一幀的輸出的圖像都會(huì)有偏差而出現(xiàn)移屏。因此,解決方法為調(diào)節(jié)復(fù)位延時(shí)參數(shù),使得寫入幀和讀出幀保持在先寫入,延時(shí)一段時(shí)間后在讀出的關(guān)系。

b. 幀差結(jié)果混亂原因分析,一開始使用16位RGB565數(shù)據(jù)做幀差,結(jié)果如圖6.6所示,出現(xiàn)混亂,所以使用合成圖像RGB565做幀差導(dǎo)致出現(xiàn)各個(gè)通道顏色對應(yīng)顏色相減溢出到其他通道的情況,所以最終相減的結(jié)果出現(xiàn)混亂。因此解決的方法是對其灰度圖像進(jìn)行幀差,兩幀圖像相減,再對相減的結(jié)果取絕對值(注意進(jìn)行減法操作和取絕對值操作時(shí),防止數(shù)據(jù)溢出),即為正確幀差結(jié)果,如圖6.4和6.5所示。觀察這兩張圖像邊緣輪廓明顯,且有明顯的拖尾現(xiàn)象。

圖6.7 運(yùn)動(dòng)目標(biāo)定位

圖6.8 運(yùn)動(dòng)目標(biāo)定位

圖6.9 運(yùn)動(dòng)目標(biāo)定位

功能測試結(jié)果:定位如圖6.7所示,隨著目標(biāo)物體的運(yùn)動(dòng),運(yùn)動(dòng)目標(biāo)物體有很多坐標(biāo)點(diǎn)輸出,根據(jù)設(shè)計(jì)任務(wù)要求,我們只輸出目標(biāo)尾端的坐標(biāo),下圖右上角為要抓取目標(biāo)的坐標(biāo)顯示,可以看到目標(biāo)所處的位置和輸出的坐標(biāo)基本符合,圖6.7,圖6.8和圖6.9為運(yùn)動(dòng)目標(biāo)在不同位置的定位結(jié)果。

結(jié)論

本文通過以下幾種手段解決了幀差算法實(shí)現(xiàn),導(dǎo)管頭定位問題和系統(tǒng)工作性能問題。

1. 乒乓操作將攝像頭采集到的圖像交替存儲(chǔ)到兩個(gè)不同的SDRAM存儲(chǔ)空間,通過SDRAM的緩沖作用,在VGA向SDRAM發(fā)出請求信號時(shí),同時(shí)讀出相鄰兩幀的數(shù)據(jù),然后就可做幀差。

2. 導(dǎo)管頭的定位是通過對幀差后的圖像作水平方向和垂直方向的投影,確定出運(yùn)動(dòng)目標(biāo)四條邊界,可確定四個(gè)坐標(biāo)點(diǎn)輸出,但是僅僅有一個(gè)坐標(biāo)點(diǎn)是導(dǎo)管頭的端點(diǎn),所以計(jì)算上邊界與運(yùn)動(dòng)物體的交點(diǎn)坐標(biāo)與左右兩條邊界的距離,判斷導(dǎo)管頭是左上到右下進(jìn)入攝像頭視覺還是左下到右上進(jìn)入攝像頭視覺,確定導(dǎo)管兩點(diǎn)坐標(biāo)輸出,然后再判斷剩余的兩點(diǎn)坐標(biāo)是否在整張圖像邊界上,確定導(dǎo)管頭坐標(biāo)輸出。

3. 這個(gè)算法設(shè)計(jì)更多的使用流水算法,使用移位和拼接運(yùn)算代替乘法器和除法器,提高系統(tǒng)運(yùn)行速度,減少資源利用率。

附錄A?VGA的常用分辨率參數(shù)表

附錄B?主要代碼

`include "../sdram_4port_ip/sdram_para.v"
module fd_target_location(  ref_clk,  rst_n,    clk_out,    //cmos interface  CMOS_SCLK,    //cmos i2c clock  CMOS_SDAT,    //cmos i2c data  CMOS_VSYNC,    //cmos vsync  CMOS_HREF,    //cmos hsync refrence  CMOS_PCLK,    //cmos pxiel clock  CMOS_XCLK,    //cmos externl clock  CMOS_DB,    //cmos data    //VGA port        VGA_HSYNC,      //horizontal sync   VGA_VSYNC,      //vertical sync  VGAD,    //VGA data    //SDRAM物理端口  S_CLK,  S_CKE,  S_NCS,  S_NCAS,  S_NRAS,  S_NWE,  S_BA,  S_A,  S_DB,  S_DQM);
  input ref_clk;  input rst_n;    output clk_out;    //cmos interface  output CMOS_SCLK;    //cmos i2c clock  inout CMOS_SDAT;    //cmos i2c data  input CMOS_VSYNC;    //cmos vsync  input CMOS_HREF;    //cmos hsync refrence  input CMOS_PCLK;    //cmos pxiel clock  output CMOS_XCLK;    //cmos externl clock  input  [7:0]  CMOS_DB;    //cmos data    //VGA port        output VGA_HSYNC;      //horizontal sync   output VGA_VSYNC;      //vertical sync  output  [15:0]  VGAD;    //VGA data
  //SDRAM物理端口  output S_CLK;  output S_CKE;  output S_NCS;  output S_NCAS;  output S_NRAS;  output S_NWE;  output [`BA-1:0] S_BA;  output [`ROW-1:0] S_A;  inout [`DQ-1:0] S_DB;  output [`DQ/8-1:0] S_DQM;

assign clk_out = clk;assign S_DQM = 0;  wire vga_clk, camera_clk, clk, sys_rst_n;// wire rst_dly1, soft_rst_n;wire soft_rst_0;wire soft_rst_1;wire soft_rst_2;wire soft_rst_3;
wire Config_Done, sdram_init_done;wire sys_we;wire [15:0] sys_data_in;wire frame_valid;wire lcd_request;wire [15:0] lcd_data_1;wire [15:0] lcd_data_2;wire [15:0] lcd_data;
wire sdram_wrreq;wire sdram_wrval;wire [`TOTAL_ADDR-1:0] sdram_wraddr;wire [`DQ-1:0] sdram_wdata;wire sdram_wdone;wire sdram_rdreq;wire sdram_rdval;wire [`TOTAL_ADDR-1:0] sdram_rdaddr;wire [`DQ-1:0] sdram_rdata;wire sdram_rdone;wire data_valid;
wire write_done_1;wire read_done_1;wire write_done_2;wire read_done_2;

wire [23:0] waddr_min_1;wire [23:0] waddr_max_1;
wire bound_valid;wire [10:0] lcd_xpos;wire [10:0] lcd_ypos;wire [10:0] x_pos;wire [10:0] y_pos;wire lcd_val;wire [15:0] lcd_dat;
wire start;wire [11:0] bcd_x_pos;wire [11:0] bcd_y_pos;wire [10:0] target_x_pos;wire [10:0] target_y_pos;wire char_en;wire [3:0] char_data;
reg dval_r1, dval_r2, dval_r3;


dcm dcm(  .clk          (ref_clk),  .rst_n          (rst_n),  .soft_rst_0        (soft_rst_0),  .soft_rst_1        (soft_rst_1),  .soft_rst_2        (soft_rst_2),  .soft_rst_3        (soft_rst_3),  .clk_c0          (camera_clk), //camera配置模塊時(shí)鐘輸出  .clk_c1          (vga_clk), //vga模塊時(shí)鐘輸出    .clk_c2          (clk), //sdram控制器時(shí)鐘輸出    .clk_c3          (S_CLK) //sdram端口時(shí)鐘  );  

  I2C_AV_Config I2C_AV_Config(  /*Global clock*/  .iCLK          (vga_clk),    //25MHz  .iRST_N          (soft_rst_0),    //Global Reset      .I2C_SCLK        (CMOS_SCLK),  //I2C CLOCK  .I2C_SDAT        (CMOS_SDAT),  //I2C DATA    .Config_Done      (Config_Done),//Config Done  .LUT_INDEX        (),  //LUT Index  .I2C_RDATA        ()  //I2C Read Data);
CMOS_Capture(  /*Global Clock*/  .iCLK          (camera_clk),      //13MHz  .iRST_N          (soft_rst_2),
  /*I2C Initilize Done*/  .Init_Done        (Config_Done & sdram_init_done),    //Init Done    /*Sensor Interface*/  .CMOS_RST_N        (),    //cmos work state(5ms delay for sccb config)  .CMOS_PWDN        (),      //cmos power on    .CMOS_XCLK        (CMOS_XCLK),    //  .CMOS_PCLK        (CMOS_PCLK),    //25MHz  .CMOS_iDATA        (CMOS_DB),    //CMOS Data  .CMOS_VSYNC        (CMOS_VSYNC),    //L: Vaild  .CMOS_HREF        (CMOS_HREF),    //H: Vaild    /*Ouput Sensor Data*/  .x_pos          (),  .y_pos          (),  .CMOS_HREF_pos      (),  .CMOS_oCLK        (sys_we),    //1/2 PCLK  .CMOS_oDATA        (sys_data_in),    //16Bits RGB      .CMOS_VALID        (frame_valid),    //Data Enable  .CMOS_FPS_DATA      ()  //cmos fps);
wire corrode_dval_w1;wire corrode_data_w1;wire dilation_dval_w2;wire dilation_data_w2;wire dval_w2;wire data_w2;wire dval_w3;wire [15:0] data_w3;
// image_smooth image_smooth(  // .clk          (CMOS_PCLK),  // .rst_n          (soft_rst_2),  // .dval_i          (sys_we),  // .data_i          (sys_data_in[7:0]),  // .dval_o          (dval_1),  // .data_o          (data_1)// );
// median_filter median_filter(  // .clk          (CMOS_PCLK),  // .rst_n          (soft_rst_2),  // .dval_i          (sys_we),  // .data_i          (sys_data_in[7:0]),  // .dval_o          (dval_1),  // .data_o          (data_1)// );
image_corrode image_corrode(  .clk          (vga_clk),  .rst_n          (soft_rst_3),  .dval_i          (lcd_val),  .data_i          (lcd_dat[0]),  .dval_o          (corrode_dval_w1),  .data_o          (corrode_data_w1));
image_dilation image_dilation(  .clk          (vga_clk),  .rst_n          (soft_rst_3),  .dval_i          (corrode_dval_w1),  .data_i          (corrode_data_w1),  .dval_o          (dilation_dval_w2),  .data_o          (dilation_data_w2));
//二值圖像投影projection projection(  .clk          (vga_clk),  .rst_n          (soft_rst_3),  .dval_i          (lcd_val),  .data_i          (lcd_dat[0]),  .x_pos          (x_pos),  .y_pos          (y_pos),  .target_x_pos      (target_x_pos),  .target_y_pos      (target_y_pos),    .dval_o          (dval_w3),  .data_o          (data_w3) //);

bin_to_bcd u0_bin_to_bcd(.bin(target_x_pos), .bcd(bcd_x_pos));bin_to_bcd u1_bin_to_bcd(.bin(target_y_pos), .bcd(bcd_y_pos));
char_mac u_char_mac(  .clk        (vga_clk),  .rst_n        (soft_rst_3),  .start        (start),  .bcd_x_pos      (bcd_x_pos),  .bcd_y_pos      (bcd_y_pos),  .char_en      (char_en),  .char_data      (char_data));
char_disp u_char_disp(  .clk        (vga_clk),  .rst_n        (soft_rst_3),  .char_en      (char_en),  .char_data      (char_data),  .move_x_pos      (12'd560),  .move_y_pos      (12'd30),  .data_valid_pos    (start),  .data_valid      (dval_w2), //dval_w2 lcd_val dval_w1 dilation_dval_w2  .x_pos        (x_pos),  .y_pos        (y_pos),  .data_i        ({R[7:3], G[7:2], B[7:3]}), //{R[7:3], G[7:2], B[7:3]} lcd_dat {16{dilation_data_w2}} dilation_data_w2  .data_valid_o    (),  .data_o        (lcd_data));
//------------------------------------------------------//將yuv轉(zhuǎn)換成rgb輸出wire [7:0] Y, Cb, Cr;wire [7:0] R, G, B;reg [15:0] data_r1;
yuv422_yuv444 yuv422_yuv444(  .clk        (vga_clk),  .rst_n        (soft_rst_3),  .yuv_capture_en    (lcd_request), //ahead 2 clock  .image_data      (lcd_data_1), //lcd_data_1  .Y          (Y),   .Cb          (Cb),   .Cr          (Cr));
yuv2rgb yuv2rgb(  .clk        (vga_clk),      //時(shí)鐘輸入  .rst        (soft_rst_3),      //復(fù)位輸入  .y_in        (Y),                   //變換前Y分量輸出  .cb_in        (Cb),                   //變換前Cb分量輸出  .cr_in        (Cr),      //變換前Cr分量輸出  .ena_in        (dval_r1),      //待變換數(shù)據(jù)使能,當(dāng)它為高時(shí),輸入數(shù)據(jù)有效  .R_out        (R),      //變換后R分量輸出  .G_out        (G),      //變換后G分量輸出  .B_out        (B),      //變換后B分量輸出  .ena_out      (dval_w2)      //變換后數(shù)據(jù)使能輸出);

always @ (posedge vga_clk or negedge soft_rst_3)  if(soft_rst_3 == 1'b0)    dval_r1 <= 0;  else dval_r1 <= lcd_request;  always @ (posedge vga_clk or negedge soft_rst_3)  if(soft_rst_3 == 1'b0)    dval_r2 <= 0;  else dval_r2 <= dval_w2;  assign start = ~dval_r2 & dval_w2;

// Virtual_Camera Virtual_Camera(  // .clk            (vga_clk),  // .rst_n            (soft_rst_2),  // .sdram_init_done      (sdram_init_done),  // .dval            (sys_we),  // .data            (sys_data_in)// );
switch_in switch_in(  .clk          (clk),  .rst_n          (soft_rst_1),  .frame_done        (write_done_1),  .waddr_min_1      (waddr_min_1),  .waddr_max_1      (waddr_max_1));
switch_out switch_out(  .clk          (vga_clk),  .rst_n          (soft_rst_3),  .request        (lcd_request),  .x_pos_i        (lcd_xpos),  .y_pos_i        (lcd_ypos),  .x_pos          (x_pos),  .y_pos          (y_pos),  .start_o        (),  .lcd_data_1        (lcd_data_1),  .lcd_data_2        (lcd_data_2),  .lcd_val        (lcd_val),  .lcd_data        (lcd_dat) //lcd_data);

async_4fifo async_4fifo(  .clk          (clk),  .rst_n          (soft_rst_1),  .sdram_init_done    (sdram_init_done), //sdram初始化完成信號    /*用戶接口*/  /*寫用戶1接口*/  .clk_write_1      (CMOS_PCLK), //vga_clk, CMOS_PCLK  .wrreq_1        (sys_we), //sys_we dval_1  .wdata_1        (sys_data_in), //sys_data_in {8'd0, data_1}  .write_done_1      (write_done_1),  /*參數(shù)設(shè)置*/  .waddr_min_1      (waddr_min_1), //24'd0  .waddr_max_1      (waddr_max_1), //24'd307200  .wr_length_1      (9'd256), //,這個(gè)是緩沖節(jié)點(diǎn)    /*讀用戶1接口*/  .clk_read_1        (vga_clk), //vga_clk  .rdreq_1        (lcd_request), //lcd_request  .rdata_1        (lcd_data_1), //lcd_data lcd_data_1  .read_done_1      (),  .data_valid_1      (data_valid), //sdram讀端口同步信號  /*參數(shù)設(shè)置*/  .raddr_min_1      (24'd0),  .raddr_max_1      (24'd307200),  .rd_length_1      (9'd256), //,這個(gè)是緩沖節(jié)點(diǎn)      /*寫用戶2接口*/  .clk_write_2      (CMOS_PCLK), //vga_clk, CMOS_PCLK  .wrreq_2        (0), //sys_we  .wdata_2        (0), //sys_data_in  .write_done_2      (),  /*參數(shù)設(shè)置*/  .waddr_min_2      (24'd0), //24'd307200  .waddr_max_2      (24'd0), //24'd614400  .wr_length_2      (9'd256), //必須添加很重要,這個(gè)是緩沖節(jié)點(diǎn)      /*讀用戶2接口*/  .clk_read_2        (vga_clk),  .rdreq_2        (lcd_request), //lcd_request  .rdata_2        (lcd_data_2), //lcd_data lcd_data_2  .read_done_2      (),  .data_valid_2      (data_valid), //sdram讀端口同步信號 data_valid  /*參數(shù)設(shè)置*/  .raddr_min_2      (24'd307200), //24'd307200  .raddr_max_2      (24'd614400), //24'd614400  .rd_length_2      (9'd256), //必須添加很重要,這個(gè)是緩沖節(jié)點(diǎn)      /*寫SDRAM端口*/  .sdram_wrreq      (sdram_wrreq),  .sdram_wrval      (sdram_wrval),  .sdram_wraddr      (sdram_wraddr),  .sdram_wdata      (sdram_wdata),  .sdram_wdone      (sdram_wdone),    /*讀SDRAM端口*/  .sdram_rdreq      (sdram_rdreq),  .sdram_rdval      (sdram_rdval),  .sdram_rdaddr      (sdram_rdaddr),  .sdram_rdata      (sdram_rdata),  .sdram_rdone      (sdram_rdone));

lsm_sdram lsm_sdram(  /*全局變量*/  .clk          (clk),  .rst_n          (soft_rst_1),  .sdram_init_done    (sdram_init_done),    /*寫SDRAM端口*/  .sdram_wrreq      (sdram_wrreq),  .sdram_wrval      (sdram_wrval),  .sdram_wraddr      (sdram_wraddr),  .sdram_wdata      (sdram_wdata),  .sdram_wdone      (sdram_wdone),    /*讀SDRAM端口*/  .sdram_rdreq      (sdram_rdreq),  .sdram_rdval      (sdram_rdval),  .sdram_rdaddr      (sdram_rdaddr),  .sdram_rdata      (sdram_rdata),  .sdram_rdone      (sdram_rdone),    /*SDRAM物理端口*/  .sdram_clk        (),  .sdram_cke        (S_CKE),  .sdram_cs_n        (S_NCS),  .sdram_cas_n      (S_NCAS),  .sdram_ras_n      (S_NRAS),  .sdram_we_n        (S_NWE),  .sdram_ba        (S_BA),  .sdram_a        (S_A),  .sdram_dq        (S_DB),  .sdram_dqm        ());

lcd_top lcd_top(      //global clock  .clk          (vga_clk),      //system clock  .rst_n          (soft_rst_3),         //sync reset    //lcd interface  .lcd_dclk        (),     //lcd pixel clock  .lcd_blank        (),    //lcd blank  .lcd_sync        (),    //lcd sync  .lcd_hs          (VGA_HSYNC),        //lcd horizontal sync  .lcd_vs          (VGA_VSYNC),        //lcd vertical sync  .lcd_en          (),      //lcd display enable  .lcd_rgb        (VGAD),    //lcd display data
  //user interface  .lcd_request      (lcd_request),  //lcd data request  .lcd_framesync      (data_valid),  //lcd frame sync  .lcd_pos        (),  .lcd_xpos        (lcd_xpos),    //lcd horizontal coordinate  .lcd_ypos        (lcd_ypos),    //lcd vertical coordinate  .lcd_data        (lcd_data)    //lcd data);  

endmodule

本篇到此結(jié)束,各位大俠有緣再見!

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級 參考價(jià)格 更多信息
EPM240M100C5N 1 Altera Corporation Flash PLD, 7.5ns, 192-Cell, CMOS, PBGA100, 6 X 6 MM, 0.50 MM PITCH, LEAD FREE, MICRO, FBGA-100
$80.18 查看
A3P125-VQG100T 1 Microsemi FPGA & SoC Field Programmable Gate Array, 3072 CLBs, 125000 Gates, 350MHz, 3072-Cell, CMOS, PQFP100, 0.50 MM PITCH, GREEN, VQFP-100
$3.24 查看
LFE5U-45F-7BG256I 1 Lattice Semiconductor Corporation Field Programmable Gate Array,

ECAD模型

下載ECAD模型
$18.74 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

任何技術(shù)的學(xué)習(xí)就好比一個(gè)江湖,對于每一位俠客都需要不斷的歷練,從初入江湖的小白到歸隱山林的隱世高人,需要不斷的自我感悟自己修煉,讓我們一起仗劍闖FPGA乃至更大的江湖。