能夠替代一部分功能html
也有博主作過相關吐槽https://www.xuebuyuan.com/1786786.htmlpython
https://www.bilibili.com/video/av77054717linux
https://www.xuebuyuan.com/1786786.htmlgit
由於主要想要介紹的是Mac系統下的,其它兩個系統給你們推薦一下教程就不贅述了。若是推薦的方法過期了,能夠具體的能夠看一下GHDL的官方文檔https://ghdl.readthedocs.io/en/latest/。或者在底下留言,一同探討。github
在macOS High Sierra系統 10.13.6下,我安裝了GCC9.0.2_1後好像就自動有了GHDL。shell
我刪除GCC後卻依舊可使用GHDL,我不知道他是否是來自GCC更低的版本,或者是來自Xcode工具,亦或者是mac系統自帶的。macos
爲了解決這個疑惑,我去翻閱了GCC的官方文檔,可是依舊未能解決疑惑。有正解的小夥伴能夠在評論提供一下。我只能根據查到的一些蛛絲馬跡估計是來自Xcode工具,若是你下載了Xcode並安裝了GCC依舊沒法使用GHDL的話。那麼請看一下mcode的版本,也須要有GCC,安裝也是很是方便,就是國內下載github上面的東西你們也懂的,好在文件不大。vim
咱們從GHDL官網提供的連接下載mcode版本的GHDL,https://github.com/ghdl/ghdl/releases/download/v0.37/ghdl-0.37-macosx-mcode.tgz。windows
其它系統能夠看這裏:bash
解壓後隨便存個地方,設置一下環境變量就可使用了。
設置環境變量能夠修改~/.bash_profile,方法以下:
$ vim ~/.bash_profile
將下面這段文本添加進去,注意替換<解壓文件存放的目錄>和修改版本號:
PATH="<解壓文件存放的目錄>/ghdl-0.37-macosx-mcode/bin:${PATH}" export PATH
讓修改生效:
$ source ~/.bash_profile
因爲以前已經安裝GHDL了,我給新的GHDL起名ghdlm以作區分。若是操做成功,在命令行輸入指令能夠看到:
$ ghdlm # 新安裝的 ghdlm:error: missing command, try ghdlm --help $ ghdl # 以前的 ghdl: missing command, try ghdl --help
若是你在source那一步遇到問題,那重啓電腦就行了。
$ brew cask install gtkwave
請不要忽略cask。
最後安裝好的文件會在Application裏,但咱們不須要主動打開它。
咱們先作一個簡單的樣例,就好比半加器吧。
先編寫咱們的vhd文件,咱們這裏須要兩個文件,若是學過Quartus ii的話應該會清楚,咱們須要一個vhd文件和一個波形文件。在這裏,咱們將用另外一個vhd來代替波形文件。
首先,編寫半加器的文件,命名爲half_adder.vhd,命名是須要格外注意的問題:
library ieee; use ieee.std_logic_1164.all; entity HALF_ADDER is port( A: in std_logic; B: in std_logic; CO: out std_logic; SO: out std_logic ); end HALF_ADDER; architecture behv of HALF_ADDER is begin SO <= A xor B; CO <= A and B; end behv;
接着,編寫半加器的testbench文件,命名爲half_adder_tb.vhd,這可能須要掌握一些元件例化的知識:
library ieee; use ieee.std_logic_1164.all; entity HALF_ADDER_TB is end HALF_ADDER_TB; architecture tbbehv of HALF_ADDER_TB is component HALF_ADDER port( A: in std_logic; B: in std_logic; CO: out std_logic; SO: out std_logic ); end component; signal A,B :std_logic := '0'; signal CO,SO :std_logic; begin u1: HALF_ADDER port map(A,B,CO,SO); input: process begin A<='0';B<='0'; wait for 20 ns; A<='0';B<='1'; wait for 20 ns; A<='1';B<='0'; wait for 20 ns; A<='1';B<='1'; wait for 20 ns; wait; end process; end tbbehv;
因爲註釋可能會報錯,在此就不加了,可是學過元件例化應該不難理解,若是有困難能夠百度「VHDL TESTBENCH」,有不少教程。
而後咱們須要先編譯half_adder.vhd和half_adder_tb.vhd兩個文件
$ ghdl -a half_adder.vhd $ ghdl -a half_adder_tb.vhd
而後由half_adder_tb生成可執行文件
$ ghdl -e half_adder_tb
$ ghdl -r half_adder_tb --vcd=a.vcd
名字能夠隨便起,不必定是a.vcd,可是要有後綴名,爲了GTKWave打得開。
咱們先修改一下.vcd文件的默認打開方式爲GTKWave,之後就能夠雙擊直接打開。
這時候就能夠看到波形了(注意先點擊half_adder_tb,再把左下角信號拖進Signals那一欄,而且用放大鏡縮放視圖到合適的位置):
GTKWave的功能仍是很強大的,你們還能夠摸索一下。
不知道看到這一步以前是否就有被勸退的呢?
被麻煩的命令行操做,仍是複雜的testbench文件。
但其實我想說,既然是命令行操做,爲何不用一個shell腳本或者一個python腳原本搞定呢?testbench也能夠結合本身的使用習慣生成,或者輸入波形來生成。
__--__--__--__-- ____----____----
咱們來一個簡約版的:
echo -e "\033[32m第一次使用會安裝必備的依賴,請稍等片刻\033[0m"; info=`which ghdl`; if [ -z "$info" ]; then echo -e "1"; else echo -e "ghdl is installed"; fi if [ ! -d "/Applications/gtkwave.app/" ]; then echo -e "installing gtkwave"; brew cask install gtkwave; else echo -e "gtkwave is installed"; fi if [ -z "$1" ]; then echo -e "gvhdl: missing command, try gvhdl --help" elif [ -z "$2" ]; then ghdl -a "$1".vhd; ghdl -e "$1"; ghdl -r "$1" --vcd=a.vcd; rm e~"$1".o; rm "$1".o; rm work-obj*; rm "$1".o; else ghdl -a "$2".vhd; ghdl -a "$1".vhd; ghdl -e "$2"; ghdl -r "$2" --vcd=a.vcd; rm e~"$2".o; rm "$2".o; rm "$2"; rm "$1".o; rm work-obj*; fi
因爲版本可能不同,我在這裏給個樣例,你們參考便可。另外也沒有編寫生成testbench的部分,若是有感興趣的,能夠留評論哦。
之後我會在博客園多更一些與Mac系統使用相關的,和Web開發相關的,但願能夠和你們一塊兒探討學習。