导航:首页 > 源码编译 > 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光纤全工半全工设置命令 浏览:139
公司法pdf下载 浏览:379
linuxmarkdown 浏览:349
华为手机怎么多选文件夹 浏览:681
如何取消命令方块指令 浏览:347
风翼app为什么进不去了 浏览:776
im4java压缩图片 浏览:360
数据查询网站源码 浏览:148
伊克塞尔文档怎么进行加密 浏览:888
app转账是什么 浏览:161