久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5771|回復: 3
收起左側

在FPGA中嵌入8051核的詳細方法與步驟

[復制鏈接]
ID:128229 發表于 2016-6-27 01:04 | 顯示全部樓層 |閱讀模式
      首先聲明:本文是在我的技術指導員的指導下由本人根據實踐摸索而得的經驗所原創,如有轉載請注明作者及出處。
    -----(本文與新浪博客同步)
     并且也敢大膽的說一句這也許是網絡上最完整的最清晰最詳細的在FPGA中嵌入51單片機內核的中文教程。不信你網上搜搜,反正當初我摸索的時候是每找到一篇具有實用價值的文章。我就非常不理解,這不是一項很少人掌握的技術,為什么就幾乎沒有人將此分享出來呢。
    好了,廢話不多說了,上正文。此教程我使用的是oreganosystems提供的開源8051內核。Altera自帶的8051內核并不是免費的,我也曾跟altera的客服發郵件申請過8051內核(英文的郵件交流。。我也不太說),反正用郵件對話了幾次大致意思是他們不免費給,說網上有免費的51IP核可以自己去下載。可以自己去那個網上下載或者下載我上傳的

該源碼請:點擊下載(附件依附于21EDA論壇歡迎訪問)




打開后的文件有上面這些文件夾。其中就一個最重要的就是8051核的源碼,全部放在vhdl這個文件夾里面。那個pdf文檔是這個IP核的使用教程,是官方標配的使用文檔,也是純英文的,對于英語四級沒過的我下定決心花了大力氣看最后只是一場空。。這問文檔寫的是用Synplify Pro這個綜合軟件綜合的,雖然據說用這個軟件進行綜合可以節約FPGA的很多邏輯單元,但是對于我們這些初學者來講,真的又麻煩又不適用,我們還是直接用QuartusII 來進行綜合好了。

51IP核的源碼全部在都在vhdl 這個文件夾中,打開是一大堆的源文件。




對于這么多的文件該怎么用,該如何使用,這是本文的重點。
首先用QuartusII建立一個工程,這這里先提醒下,文件目錄最好不要包含中文,空格,不然會有些無法理解的錯誤。
然后將 vhdl 整個文件夾復制到工程目錄下(個人習慣,等下添加進工程里面的時候方便點)。下面是添加8051核文件的步驟。








選擇文件添加進工程。這里注意下
后面拖著_cfg 的這種文件不要添加進工程里面,還有就是含有_top_的文件也不要添加到里面。
然后雙擊打開mc8051_p.vhd 這個文件。把下面這些模塊的例化語句全部刪掉,這點非常重要!!
  component mc8051_top
    port (clk         : in  std_logic;
          reset       : in  std_logic;
          int0_i      : in  std_logic_vector(C_IMPL_N_EXT-1 downto 0);
          int1_i      : in  std_logic_vector(C_IMPL_N_EXT-1 downto 0);
          all_t0_i    : in  std_logic_vector(C_IMPL_N_TMR-1 downto 0);
          all_t1_i    : in  std_logic_vector(C_IMPL_N_TMR-1 downto 0);
          all_rxd_i   : in  std_logic_vector(C_IMPL_N_SIU-1 downto 0);
          p0_i        : in  std_logic_vector(7 downto 0);
          p1_i        : in  std_logic_vector(7 downto 0);
          p2_i        : in  std_logic_vector(7 downto 0);
          p3_i        : in  std_logic_vector(7 downto 0);
          p0_o        : out std_logic_vector(7 downto 0);
          p1_o        : out std_logic_vector(7 downto 0);
          p2_o        : out std_logic_vector(7 downto 0);
          p3_o        : out std_logic_vector(7 downto 0);
          all_rxd_o   : out std_logic_vector(C_IMPL_N_SIU-1 downto 0);
          all_txd_o   : out std_logic_vector(C_IMPL_N_SIU-1 downto 0);
          all_rxdwr_o : out std_logic_vector(C_IMPL_N_SIU-1 downto 0));

  end component;

  -----------------------------------------------------------------------------
  -- START: Component declarations for simulation models
  -----------------------------------------------------------------------------
  component mc8051_ram
    port (clk        : in  std_logic;
      reset      : in  std_logic;
      ram_data_i : in  std_logic_vector(7 downto 0);
          ram_data_o : out std_logic_vector(7 downto 0);
          ram_adr_i  : in  std_logic_vector(6 downto 0);
          ram_wr_i   : in  std_logic;
          ram_en_i   : in  std_logic);

  end component;

  component mc8051_ramx
    port (clk        : in  std_logic;
      reset      : in  std_logic;
      ram_data_i : in  std_logic_vector(7 downto 0);
          ram_data_o : out std_logic_vector(7 downto 0);
          ram_adr_i  : in  std_logic_vector(15 downto 0);
          ram_wr_i   : in  std_logic);

  end component;

  component mc8051_rom
    port (clk        : in  std_logic;
      reset      : in  std_logic;
      rom_data_o : out std_logic_vector(7 downto 0);
          rom_adr_i  : in  std_logic_vector(15 downto 0));

  end component;
  -----------------------------------------------------------------------------
  -- END: Component declarations for simulation models
  -----------------------------------------------------------------------------

然后雙擊打開mc8051_core.vhd 這個文件。




這樣就可以生成mc8051核的原理圖模塊了。




當然光有這個核,它還不是完整的51核,還需要給它添加ram和rom
Ram是必須的,ramx是擴展的,rom也是必須的,是用來放所需運行的51單片機程序的,大小可以根據需要定制。但是推薦ram的大小用固定的以下配置。




三個存儲單元都有一點需要注意,就是不能寄存輸出。




就是在ram和rom配置的時候都要把 ‘q‘output port 前面的勾去掉!這點也很重要。
rom配置的時候需要加入.hex文件,就是keilc51 編譯好的平時下載到單片機實驗板上的那個程序文件,初始的時候可以隨便添加一個就可以了,待程序寫好后,就重新把它添加要rom里面,注意,如果改變了rom的程序文件,那么要重新完整編譯一次下載到板子上才是更新后的程序噢。




然后就按照固定的格式將他們連接起來就可以了。可以發現,有些線是斷開的通過標號來連接的,跟protel里的網絡標號差不多。一般的數據寬度不匹配的時候就用這種方式來連接,如果直接連接,編譯會報錯的。




這里面我添加了鎖相環,這個最好加上,因為我在測試的時候發現同樣的時鐘頻率下,加了鎖相環才能工作,不加就不工作。
Ok 編譯下載就成功了。不過從編譯報告來看,這個東西的確占邏輯單元比較多,我的板子是EP2C8Q208C8的芯片,用了一半的邏輯單元去。。。電腦CPU差,編譯時間又挺漫長的。。
嗯,總結一下嵌入51核要注意的點
1、添加文件進工程時,有些是必要的,有些是不能加的。
2、有個文件要進行一下修改
3、配置ram和rom的時候,不要寄存器輸出。
如有錯誤,歡迎指正。

評分

參與人數 1黑幣 +3 收起 理由
2017_fpga + 3 贊一個!

查看全部評分

回復

使用道具 舉報

ID:100050 發表于 2016-7-23 13:30 | 顯示全部樓層
贊  學習了~~~~
回復

使用道具 舉報

ID:170136 發表于 2017-3-12 18:43 | 顯示全部樓層
樓主有沒有FPGA中嵌入8051的相關資料 求助呀
回復

使用道具 舉報

ID:86991 發表于 2017-4-19 21:18 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人影院在线视频 | 国产一区二区精品 | 狠狠干狠狠操 | 在线免费中文字幕 | 欧美成人在线影院 | 成人午夜免费在线视频 | 国产小视频在线 | 99热这里都是精品 | 日韩综合在线 | 亚洲精品片 | 在线不卡视频 | 久久高清| 一级特黄a大片 | 免费黄色录像片 | 久久久久久久电影 | 香蕉一区 | 无吗视频 | 婷婷色国产偷v国产偷v小说 | 二区国产 | 成人在线免费视频 | 国产婷婷色一区二区三区 | 亚洲国产成人一区二区 | 日韩高清中文字幕 | 久久精品久久久久久 | 午夜丰满寂寞少妇精品 | 欧美黄 片免费观看 | 国产日韩欧美精品 | 欧美一区二区免费在线 | 国产精品福利在线观看 | 婷婷午夜天| 一区二区三区在线看 | 一区二区免费在线观看 | 久久久久国产精品一区二区 | 玖玖视频 | 国产在线精品一区二区 | 国产大片黄色 | 国产精品日韩在线 | 国产一区二区免费 | 一区二区三区精品 | 日本一区二区不卡 | 超碰地址 |