tinyriscv verilator分支移植到正點(diǎn)原子達(dá)芬奇開發(fā)板

我是 雪天魚默伍,一名FPGA愛好者,研究方向是FPGA架構(gòu)探索和數(shù)字IC設(shè)計(jì)。

關(guān)注公眾號(hào)【集成電路設(shè)計(jì)教程】巡验,獲取更多學(xué)習(xí)資料际插,并拉你進(jìn)“IC設(shè)計(jì)交流群”。
QQIC設(shè)計(jì)&FPGA&DL交流群 群號(hào):866169462显设。

前言

為了完成自己的畢設(shè)框弛,得用OpenOCD作上位機(jī),測(cè)試下RISC-V的單步調(diào)試以及GDB調(diào)試等操作捕捂,然后看了下tinyriscv-verilator的調(diào)試模塊支持這些操作瑟枫,所以來移植下該版本的tinyriscv,以博客進(jìn)行記錄指攒。

一些基礎(chǔ)操作這里不再贅述慷妙,不會(huì)的讀者可以去看我的另一篇博客:手把手教你移植 tinyriscv 到FPGA上 https://blog.csdn.net/qq_44447544/article/details/123251073

一、下載源碼

碼云鏈接:https://gitee.com/liangkangnan/tinyriscv/tree/verilator/
打包下載即可允悦,解壓后膝擂,將RTL添加到新建工程源碼中。添加完成后隙弛,如下圖所示:

可以看到 jtag 調(diào)試模塊更新了架馋,將tap、dtm全闷、dmi以及dm模塊都獨(dú)立實(shí)現(xiàn)了叉寂。

二、移植到Aritx-7

開發(fā)板;正點(diǎn)原子達(dá)芬奇FPGA開發(fā)板(v1)总珠,芯片型號(hào)為 xc7a35tfgg484-1
調(diào)試器:FT4232H

2.1 添加 mmcm IP

tinyriscv_soc_top.sv 頂層模塊中例化了 mmcm IP屏鳍,所以要進(jìn)行添加,點(diǎn)擊左側(cè)導(dǎo)航欄中的 IP Catalog局服,搜索 Clocking,選擇下圖所示的IP:

配置如下圖所示;

然后點(diǎn)擊 ok钓瞭,彈出的彈窗選擇 Generate

可以看到此IP已經(jīng)不再是缺失狀態(tài)了腌逢。

2.2 管腳約束

首先來看下此版本的tinyriscv的頂層接口:

可以看到和master 版本基本差不多降淮,去掉了單獨(dú)的UART Pins,將UART功能放在了GPIO復(fù)用功能中搏讶。管腳約束的話佳鳖,時(shí)鐘約束到板卡時(shí)鐘管腳上,復(fù)位按鈕約束到按鈕上媒惕,halted_ind_pin 信號(hào)和 dump_wave_en_o 信號(hào)均約束到LED上系吩,jtag、gpio和flash spi均約束到空閑IO上即可妒蔚。

約束文件:

# 時(shí)鐘約束50MHz穿挨,占空比50%
create_clock -period 20.000 -name sys_clk_pin -waveform {0.000 10.000} -add [get_ports clk_50m_i]

# 時(shí)鐘引腳
set_property -dict {PACKAGE_PIN R4 IOSTANDARD LVCMOS33} [get_ports clk_50m_i]

# 復(fù)位引腳
set_property -dict {PACKAGE_PIN U2 IOSTANDARD LVCMOS33} [get_ports rst_ext_ni]

# CPU停住指示引腳,halted_ind_pin 為1時(shí)有效月弛,點(diǎn)亮led2
set_property -dict {PACKAGE_PIN V2 IOSTANDARD LVCMOS33} [get_ports halted_ind_pin]

# io_pins引腳
set_property -dict {PACKAGE_PIN F16 IOSTANDARD LVCMOS33} [get_ports {io_pins[0]}]
set_property -dict {PACKAGE_PIN F15 IOSTANDARD LVCMOS33} [get_ports {io_pins[1]}]
set_property -dict {PACKAGE_PIN F13 IOSTANDARD LVCMOS33} [get_ports {io_pins[2]}]
set_property -dict {PACKAGE_PIN E14 IOSTANDARD LVCMOS33} [get_ports {io_pins[3]}]
set_property -dict {PACKAGE_PIN H18 IOSTANDARD LVCMOS33} [get_ports {io_pins[4]}]
set_property -dict {PACKAGE_PIN G17 IOSTANDARD LVCMOS33} [get_ports {io_pins[5]}]
set_property -dict {PACKAGE_PIN H15 IOSTANDARD LVCMOS33} [get_ports {io_pins[6]}]
set_property -dict {PACKAGE_PIN H14 IOSTANDARD LVCMOS33} [get_ports {io_pins[7]}]
set_property -dict {PACKAGE_PIN G13 IOSTANDARD LVCMOS33} [get_ports {io_pins[8]}]
set_property -dict {PACKAGE_PIN J15 IOSTANDARD LVCMOS33} [get_ports {io_pins[9]}]
set_property -dict {PACKAGE_PIN AB18 IOSTANDARD LVCMOS33} [get_ports {io_pins[10]}]
set_property -dict {PACKAGE_PIN G15 IOSTANDARD LVCMOS33} [get_ports {io_pins[11]}]
set_property -dict {PACKAGE_PIN G16 IOSTANDARD LVCMOS33} [get_ports {io_pins[12]}]
set_property -dict {PACKAGE_PIN P20 IOSTANDARD LVCMOS33} [get_ports {io_pins[13]}]
set_property -dict {PACKAGE_PIN P19 IOSTANDARD LVCMOS33} [get_ports {io_pins[14]}]
set_property -dict {PACKAGE_PIN J16 IOSTANDARD LVCMOS33} [get_ports {io_pins[15]}]

# JTAG TCK引腳  PortA 0
set_property -dict {PACKAGE_PIN AA8 IOSTANDARD LVCMOS33} [get_ports jtag_TCK_pin]
create_clock -period 300.000 -name jtag_clk_pin [get_ports jtag_TCK_pin]
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets jtag_TCK_pin]

# JTAG TMS引腳 PortA 3
set_property -dict {PACKAGE_PIN AB8 IOSTANDARD LVCMOS33} [get_ports jtag_TMS_pin]

# JTAG TDI引腳 PortA 1
set_property -dict {PACKAGE_PIN Y7 IOSTANDARD LVCMOS33} [get_ports jtag_TDI_pin]

# JTAG TDO引腳 PortA 2
set_property -dict {PACKAGE_PIN Y8 IOSTANDARD LVCMOS33} [get_ports jtag_TDO_pin]

# SPI dq引腳
set_property -dict {PACKAGE_PIN F14 IOSTANDARD LVCMOS33} [get_ports {flash_spi_dq_pin[0]}]
set_property -dict {PACKAGE_PIN F18 IOSTANDARD LVCMOS33} [get_ports {flash_spi_dq_pin[1]}]
set_property -dict {PACKAGE_PIN D17 IOSTANDARD LVCMOS33} [get_ports {flash_spi_dq_pin[2]}]
set_property -dict {PACKAGE_PIN W22 IOSTANDARD LVCMOS33} [get_ports {flash_spi_dq_pin[3]}]

# SPI SS引腳
set_property -dict {PACKAGE_PIN E13 IOSTANDARD LVCMOS33} [get_ports flash_spi_ss_pin]

# SPI CLK引腳
set_property -dict {PACKAGE_PIN H22 IOSTANDARD LVCMOS33} [get_ports flash_spi_clk_pin]

#SPI 相關(guān)設(shè)置
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property CONFIG_MODE SPIx4 [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property BITSTREAM.CONFIG.UNUSEDPIN PULLUP [current_design]

2.3 綜合實(shí)現(xiàn)

管腳約束好后,進(jìn)行綜合實(shí)現(xiàn)科盛,版圖如下:

資源利用率;

三帽衙、簡(jiǎn)單測(cè)試

生成比特流下載到開發(fā)板上,然后通過OpenOCD進(jìn)行連接贞绵。

可以看到已經(jīng)成功連接到了厉萝。再登錄終端嘗試單步調(diào)試和斷點(diǎn):

都沒問題,搞定榨崩,繼續(xù)弄畢業(yè)論文去了谴垫。

  • 更多技術(shù)文章和學(xué)習(xí)資料,請(qǐng)關(guān)注我的公眾號(hào):【集成電路設(shè)計(jì)教程】
  • 全平臺(tái)統(tǒng)一:【雪天魚】
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末母蛛,一起剝皮案震驚了整個(gè)濱河市翩剪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌彩郊,老刑警劉巖前弯,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異焦辅,居然都是意外死亡博杖,警方通過查閱死者的電腦和手機(jī)椿胯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門筷登,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人哩盲,你說我怎么就攤上這事前方。” “怎么了廉油?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵惠险,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我抒线,道長(zhǎng)班巩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任嘶炭,我火速辦了婚禮抱慌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘眨猎。我一直安慰自己抑进,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布睡陪。 她就那樣靜靜地躺著寺渗,像睡著了一般匿情。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上信殊,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天炬称,我揣著相機(jī)與錄音,去河邊找鬼涡拘。 笑死转砖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鲸伴。 我是一名探鬼主播府蔗,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼汞窗!你這毒婦竟也來了姓赤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤仲吏,失蹤者是張志新(化名)和其女友劉穎不铆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體裹唆,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡誓斥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了许帐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劳坑。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖成畦,靈堂內(nèi)的尸體忽然破棺而出距芬,到底是詐尸還是另有隱情,我是刑警寧澤循帐,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布框仔,位于F島的核電站,受9級(jí)特大地震影響拄养,放射性物質(zhì)發(fā)生泄漏离斩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一瘪匿、第九天 我趴在偏房一處隱蔽的房頂上張望跛梗。 院中可真熱鬧,春花似錦柿顶、人聲如沸茄袖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宪祥。三九已至聂薪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蝗羊,已是汗流浹背藏澳。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耀找,地道東北人翔悠。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像野芒,于是被迫代替她去往敵國(guó)和親蓄愁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容