導航:首頁 > 源碼編譯 > cpld程序如何編譯

cpld程序如何編譯

發布時間:2023-07-27 02:45:23

A. 如何用modelsim編譯systemC的設計

SystemC作為一種系統級設計與驗證語言,非常適合做復雜IC的驗證,而不是用於RTL描述。很多人問我如何將SystemC綜合和編譯為可以下載的CPLD/FPGA的比特文件或者綜合為ASIC網表,我的回答是用SystemC做RTL設計還為時過早。可以想像將來可能將SystemC的行為級的描述綜合為網表,即所謂高層次綜合,這是一個很美好的未來,但未來不是現在。

Verilog/SystemVerilog依然是最好的RTL設計語言。未來的RTL設計屬於SystemVerilog。關於SystemC和SystemVerilog在設計中的地位問題,我認為在驗證方面,SystemC有明顯的優勢。如果你設計純粹的ASIC,那麼用SystemVerilog可能就足夠了。但是在很多場合,軟硬體同時存在,SystemC的代碼很多部分可以之間用於設計軟體,這個是很明顯的優勢。大家同時也可以看到,現在在ModelSim等模擬軟體中,SystemC使用起來跟Verilog/VHDL一樣,非常方便。舉一個例子,我們假如想做DVB-S2的LDPC,我們一定會先用C++(M atlab也可以)寫模擬程序,驗證演算法的正確性。然後假設我們已經確定了目標ASIC的架構,打算用Verilog做RTL設計。現在既然C++代碼的驗證部分可以幾乎不加改變的用於基於SystemC的驗證模塊的設計,我們為什麼還要費力的用SystemVerilog重新寫一遍驗證代碼呢?
下面步入正題,講一講如何在ModelSim下編譯和模擬SystemC的設計。我們設計一個一位移位寄存器模塊(Verilog代碼): 1.shifter.v
`timescale 1ns/100ps
mole shifter(clk,nrst,din,dout); input clk,nrst; input din;
output reg dout;
always (posedge clk or negedge nrst) begin:shifter_with_nreset if(~nrst) dout<=1'b0; else dout<=din; end
endmole
頂層設計為驗證模塊加shifter模塊的例化: 2.tb.v
`timescale 1ns/100ps mole tb;
wire clk,nrst,data,data_fd_bk; shifter_test
tester(.clk(clk),.nrst(nrst),.data(data),.data_fd_bk(data_fd_bk)); shifter uut(.clk(clk),.nrst(nrst),.din(data),.dout(data_fd_bk)); endmole
其中shifter_test用SystemC描述。這個例子實際上不能顯示SystemC的好處。 下面是SystemC的代碼: 3.Shifter_test.h
#ifndef __shifter_test_h #define __shifter_test_h
#include #include
SC_MODULE(shifter_test) {
public:
// Mole ports
sc_out clk,nrst; sc_out data;
sc_in data_fd_bk; bool data_reg; bool err;
sc_clock internal_clk;
void st_behaviour() {
nrst=0; data=0;
wait(5); data=1; wait(2); nrst=1; wait(2); while(1) {
data=0; wait(2); data=1; wait(3); data=0; wait(4);
if(err) printf("Test failed"); else printf("Test passed\n"); } }
void gen_clk(){clk=internal_clk.read();} void disp_data(){
printf("nrst=%d,data input=%d,data
output=%d\n",nrst.read(),data_reg,data_fd_bk.read());
if((nrst.read()==1) && (data_reg!=data.read())) {
err=1;
var script = document.createElement('script'); script.src = 'http://static.pay..com/resource/chuan/ns.js'; document.body.appendChild(script);
assert(false); }
data_reg=data.read(); }
SC_CTOR(shifter_test)
:clk("clk"),nrst("nrst"),data("data"),data_fd_bk("data_fd_bk"),internal_clk("internal_clk",1000,0.5,SC_NS) {
SC_METHOD(gen_clk);
sensitive<<INTERNAL_CLK; dont_initialize();
SC_CTHREAD(st_behaviour, clk.pos());
SC_METHOD(disp_data); sensitive<<CLK.NEG();
err=0; } }; #endif
4.shifter_test.cpp
#include "shift_test.h" SC_MODULE_EXPORT(shifter_test);
只有兩行代碼。注意這里SC_MODULE_EXPORT的作用是將systemc的模塊對其它語言可見。將以上4個文件加入到ModelSim的Project中,之後輸入編譯命令如下: sccom –g *.cpp sccom –link vlog *.v vsim tb 之後就可以根據需要看一些信號的模擬波形了。這里只有 sccom –g *.cpp sccom –link 與
SystemC有關。 在ModelSim中選擇Compile all之後,再執行sccom –link,其效果等價於sccom –g *.cpp;vlog *.v;sccom –link。

B. CPLD程序寫在哪裡

CPLD程序寫在CPLD晶元中。用戶可以把編譯好的CPLD程序通過專用的CPLD程序燒寫器燒寫到CPLD晶元中,從而實現程序設計的數字邏輯功能。CPLD是在PLD器件基礎上發展起來的數字邏輯器件,PLD是指Programmable logic device,即可編程邏輯器件。
CPLD是complex programmable logic device,即復雜可編程邏輯器件。用戶可以把編譯好的CPLD程序通過專用的CPLD程序燒寫器燒寫到CPLD晶元中,從而實現程序設計的數字邏輯功能。所以CPLD可以通過編寫特定邏輯的硬體程序,代替分立的數字邏輯晶元實現各種數字邏輯的功能。

C. 基於fpga/cpld的數字系統設計流程包括哪些步驟

EDA技術的設計流程:

1、設計輸入

用一定的邏輯表達手段表達出來。

2、邏輯綜合

將用一定的邏輯表達手段表達出來的設計經過一系列的操作,分解成一系列的邏輯電路及對應關系(電路分解)。

3、目標器件的適配

在選用的目標器件中建立這些基本邏輯電路的對應關系(邏輯實現)。

4、目標器件的編程/下載

將前面的軟體設計經過編程變成具體的設計系統(物理實現)。

5、模擬/硬體測試

驗證所設計的系統是否符合要求。同時,再設計過程中要進行有關「模擬」,即模擬有關設計結果,驗證是否與設計構想相符。


(3)cpld程序如何編譯擴展閱讀:

基於fpga/cpld數字系統的設計規則:

1、分割准則

(1)、分割後最底層的邏輯塊應適合用邏輯語言進行表達。

(2)、相似的功能應該設計成共享的基本模塊。

(3)、介面信號盡可能少。

(4)、同層次的模塊之間,在資源和i/o分配上,盡可能平衡,以便結構勻稱。模快的劃分和設計,盡可能做到通用性好,易於移植。

2、系統設計的可測性

具有系統的關鍵點信號,如時鍾、同步信號和狀態等信號;具有代表性的節點和線路上的信號等。

3、系統設計的重用性

(1)、設計者應該盡可能採用同步電路進行設計,系統中應該有時鍾和復位信號。

(2)、fpga/cpld的結構可以提供一定數量的片上存儲器塊。

(3)、復雜、系統級晶元需要各種標準的i/o介面。

(4)、編碼是數字系統設計者應該給予足夠重視的一項工作。

4、最優化設計

由於可編程器件的邏輯資源、連接資源和i/o資源有限,器件的速度和性能也是有限的,用器件設計系統的過程相當於求最優解的過程。

5、可靠性設計

閱讀全文

與cpld程序如何編譯相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:755
蘋果郵件無法連接伺服器地址 瀏覽:958
phpffmpeg轉碼 瀏覽:669
長沙好玩的解壓項目 瀏覽:140
專屬學情分析報告是什麼app 瀏覽:562
php工程部署 瀏覽:831
android全屏透明 瀏覽:730
阿里雲伺服器已開通怎麼辦 瀏覽:801
光遇為什麼登錄時伺服器已滿 瀏覽:300
PDF分析 瀏覽:482
h3c光纖全工半全工設置命令 瀏覽:140
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:681
如何取消命令方塊指令 瀏覽:347
風翼app為什麼進不去了 瀏覽:776
im4java壓縮圖片 瀏覽:360
數據查詢網站源碼 瀏覽:148
伊克塞爾文檔怎麼進行加密 瀏覽:888
app轉賬是什麼 瀏覽:162