民间故事有什么| 芭蕉和香蕉有什么区别| 阴人是什么意思| 蚊子会传染什么病| 2030年属什么生肖| 乳房变大是什么原因| 作数是什么意思| 垂头丧气什么意思| 高中生吃什么提高记忆力| 菜花炒什么好吃| 血糖低是什么原因引起的| 前列腺彩超能查出什么| 热泪盈眶的盈是什么意思| 什么是spa| 血脂是什么意思| 运动裤配什么上衣好看| 姐姐的儿子叫什么| 楼梯步数有什么讲究| ppe是什么| 为什么会缺钙| 起水痘不能吃什么食物| 嘴唇干是什么原因引起的| 妇科养荣胶囊主治什么| 来源朋友验证消息是什么意思| 肝什么相照| 银耳和雪耳有什么区别| 白塞病是什么病| 部长助理是什么级别| 鱼平念什么| 七十岁老人装什么牙合适| 老想睡觉是什么原因| 白癜风什么症状| 草木灰是什么| 乳房检查挂什么科| 孙子兵法是什么生肖| 孕期吃什么| 低血糖是什么症状| 议论纷纷是什么意思| 激光点痣后需要注意什么| cip是什么意思| 跛子是什么意思| 椎间盘突出挂什么科| 血燕是什么| 实证是什么意思| 易岗易薪是什么意思| 冰心原名叫什么名字| 四维和大排畸有什么区别| 什么是问题| 膝盖疼痛吃什么药好| 截单是什么意思| 梦见经血是什么预兆| sc1是什么意思| kkp什么意思| 农历今天属什么| 痘坑用什么药膏最有效| 红玫瑰花语是什么意思| 领盒饭是什么意思| 隐翅虫咬了用什么药膏| 世界上最长的英文单词是什么| 两个日是什么字| 今天中国什么节日| 年少轻狂下一句是什么| 促甲状腺激素高是什么原因| 为什么总是犯困想睡觉| 肛瘘挂什么科| 宫外孕是什么意思| 氨咖黄敏胶囊主治什么| 丁羟甲苯是什么| 梦到生男孩有什么预兆| 肝血不足吃什么中成药| 鳗鱼是什么鱼| 产后复查挂什么科| 为伊消得人憔悴什么意思| 眼干眼涩眼疲劳用什么眼药水| 脑缺血有什么症状| 什么叫渣男| 一直头疼是什么原因| ovs是什么品牌| 英雄本色是什么意思| 癫痫病吃什么药| 今年62岁属什么生肖| 714什么星座| 腰封是什么| 高原反应的原因是什么| 国防部部长什么级别| 9.22什么星座| 六味地黄丸什么时候吃| 不怀孕是什么原因引起的| 白巧克力是什么做的| 眼角红肿用什么药| 胎头位于耻上是什么意思| 外阴又疼又痒用什么药| 水落石出是什么意思| hc是胎儿的什么| ca199检查是什么意思| 藏红花有什么作用和功效| 03年属什么生肖| 才子是什么意思| 女人怀孕的最佳时间是什么时间| 4pcs是什么意思| 喉咙痛挂什么科| 闭日是什么意思| 眼睛有重影是什么原因| 是什么意思| 嚼舌根是什么意思| 照见五蕴皆空什么意思| 药占比什么意思| 寻常疣是什么原因造成的| 台球杆什么牌子的好| 葫芦什么时候开花| 梦见自己生二胎是什么意思| 关节积液是什么原因造成的| 清谈是什么意思| 骨科是什么梗| 什么叫种植牙| 华五行属什么| 梦见打老公是什么意思| 上吐下泻吃什么食物好| 美尼尔眩晕症吃什么药| 羽字属于五行属什么| 6月20日是什么节日| 吃什么对脾胃好| 须尽欢什么意思| 轻贱是什么意思| 尿很臭是什么原因| 龙井属于什么茶| 考验是什么意思| 胸腔积液叩诊什么音| 眼睛散瞳有什么危害| 世界上最高的山是什么山| 吃什么长胎不长肉| 三月八号什么星座| 上升水瓶座为什么可怕| 阳朔有什么好玩的| 睾丸炎吃什么药最有效| 河水像什么| asd是什么意思| 肺炎支原体阳性是什么意思| 小葫芦项链是什么牌子| 网络维护是做什么的| 杜甫自号什么| 浮沉是什么意思| 红绿色盲是什么遗传病| gap是什么档次的牌子| 倚老卖老什么意思| 吃什么补黄体酮| 生姜什么时候吃最好| 4个月念什么字| 黑海为什么叫黑海| 雄激素是什么意思| 男士蛋皮痒用什么药| 手麻是什么引起的| 反颌是什么意思| 什么的跳| 什么什么迷人| 这是什么| 邪犯少阳证是什么意思| 胃火吃什么食物好| 为什么会牙龈出血| 10月6日是什么星座| 天珠是什么| 遇到黄鼠狼是什么征兆| 血小板高是什么病| 暗物质是什么| 川流不息什么意思| 杨枝甘露是什么东西| 驾照c2能开什么车| 补血补气吃什么最快最好| 鳞状上皮乳头状瘤是什么| 什么叫有机蔬菜| 维生素b族什么牌子的好| 雨露均沾什么意思| 阀值是什么意思| 品牌主理人是什么意思| 急性胃炎吃什么食物好| 口臭药店买什么药吃| 心火大吃什么能清火| 与狼共舞男装什么档次| 感染幽门螺旋杆菌吃什么药| 彩虹旗是什么意思| 什么叫阴阳水| 做梦梦到对象出轨是什么意思| 脑部有结节意味着什么| sys是什么意思| 台湾高山茶属于什么茶| 别扭是什么意思| 复方氨酚烷胺片是什么药| 履历是什么意思| 坐久了脚肿是什么原因| 什么时候泡脚最好| 吃什么补钾食物有哪些| 梦见和老公吵架是什么意思| 味粉是什么调料| 中度脂肪肝吃什么药| 荷叶有什么功效和作用| 柔式按摩是什么| 掰弯了是什么意思| 掌心痣代表什么意思| 癸亥五行属什么| 石斛有什么功效| 每天拉肚子是什么原因引起的| 3月10日什么星座| 小儿病毒性感冒吃什么药效果好| 胃疼去医院挂什么科| 什么消炎药最好| 狗狗能吃什么水果| 早上6点半是什么时辰| 经血发黑什么原因| 虚张声势是什么生肖| 双子座男生喜欢什么样的女生| 男人很man是什么意思| 80年属什么| 术后吃什么伤口愈合快| 立是什么结构的字| 女性尿道炎挂什么科| 公因数是什么意思| 高考600多分能上什么大学| 18年是什么年| 为什么耳屎是湿的| 朋友是什么| 清炖排骨都放什么调料| 尿蛋白是什么意思| 梦见大胖小子是什么意思| art是什么| 西洋参和人参有什么区别| 洋葱吃了有什么好处| 莴笋什么时候种植| 新生儿超敏c反应蛋白高说明什么| 吃什么下奶最快最多最有效| 空调什么牌子的好| 鸭肫是鸭的什么部位| 眼睛白色部分叫什么| 什么是碳酸饮料| 什么时候有胎心胎芽| napoleon是什么酒| 吃什么补叶酸| 星光是什么意思| 最大的恐龙是什么恐龙| 养儿防老下一句是什么| 甲状腺低是什么意思| 什么叫十二指肠球炎| ua医学上是什么意思| 心下痞是什么意思| 为的多音字是什么| 吃什么东西对眼睛好| 肉桂是什么| 今年42岁属什么生肖| 腹胀是什么原因| 鼻子经常流鼻涕是什么原因| 地球是什么| 腐竹是什么做的| 心电图t波改变什么意思| 窦性心律不齐有什么危害| 长期过敏是什么原因| 养尊处优是什么意思| 6月份能种什么菜| 千千结是什么意思| 清洁度1度是什么意思| 高血压吃什么最好| 女性分泌物像豆腐渣用什么药| 花哨是什么意思| 宝宝说话晚是什么原因造成的| 石榴石什么颜色的最好| 宅是什么意思| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? 软件与操作系统 ? SystemC基本语法

共25条 1/3 1 2 3 跳转至

SystemC基本语法

专家
2025-08-03 17:59:29     打赏
百度   (光明网记者李澍、陈城采访整理 剪辑:王嘉义)[责任编辑:李澍]

System C基本语法

作者:胡玲娜 张小军 邓鸿威  

摘 要: 随着VLSI的集成度越来越高,设计也越趋复杂。传统的设计方法如原理图输入、HDL语言描述在进行复杂系统设计时,设计效率往往比较低。特别是在算法由 软件转化为硬件的环节上,传统的设计方法的效率不是很高,设计者往往要耗费大量的时间和精力手工进行算法的转化。为解决这些问题,一种新的系统级的设计方 法SYSTEM C 被提出。SYSTEM C是一种方法,也是一个C++库,用SYSTEM C可以很方便地实现一个软件算法的硬件实现,以及完成一个系统级的设计。

关键词: System C;硬件描述语言;FPGA



一、概述

随着VLSI的集成度越来越高,设计也越趋复杂。一个系统的设计往往不仅需要硬件设计人 员的参与,也需要有软件设计人员的参与。软件设计人员与硬件设计人员之间的相互协调就变的格外重要,它直接关系到工作的效率以及整个系统设计的成败。传统 的设计方法没有使软件设计工作与硬件设计工作协调一致,而是将两者的工作割裂开来。软件算法的设计人员在系统设计后期不能为硬件设计人员的设计提供任何的 帮助。同时现在有些大规模集成电路设计中往往带有DSP Core或其它CPU Core。这些都使得单纯地用原理图或硬件描述语言来设计、仿真这么复杂的系统变得十分困难。System C就是在这些矛盾的背景下提出的。它的出现为复杂的系统设计提供了一条有效的解决途径。
System C 是由 Synospy Inc. 提出的,目前最新的版本为V2.0。它提出的目的就是以一种系统设计的思想进行系统设计。它将软件算法与硬件实现很好的结合在一起,提高了整个系统设计的效率和正确性。

System C 是一个C++ 库,也是一种使设计者可以有效地设计出一个软件算法的准确循环模型,硬件结构以及系统级设计的方法。设计者可以用System C开发工具或在标准C++开发工具中加如System C库制作系统级模型,快速地仿真和优化设计,以及研究不同的算法,并且为硬件和软件设计人员提供一个设计系统的可执行规范。可执行规范本质上是一个C++ 程序,它显示了和设计系统同样的性能,为软件设计人员和硬件设计人员提供了一个设计的标准。

System C 库提供了创造系统结构模型的必须结构,包括那些在C++没有的功能如硬件时序,并行和触发功能。C++这种面对象语言提供了通过增加类来扩展语言的能力,而这种能力是C语言所不具备的。因此,System C使用大家熟悉的C++语言和开发工具。

 

二、SYSTEM C的特点

System C 支持对硬件和软件的联合设计,支持描述一个既包含硬件部分也包含软件部分的复杂系统结构。它也支持对接口的描述,有以下几个显著的特点:

1.System C可以为软件设计人员和硬件设计人员提供一个系统的可执行规范。设计人员使用该可执行规范可以避免设计中矛盾和错误的产生,并确保设计的完备性。这是应为 在设计可执行规范时,系统设计者必须设计出也一个和系统具有同样工作状态的程序,通过这个程序可以发掘出潜在的矛盾和错误,并将这些矛盾和错误消除在整个 设计的开始阶段,而不是在整个系统进行调试阶段才发现和解决这些矛盾和错误。这个程序还可以帮助设计者确保整个系统设计的完备性。

2.设计人员利用这个可执行的系统规范,还可以发现设计中概念模糊的地方。无论什么时 候,设计人员对设计产生疑惑,就可以运行这个可执行程序以明确在这个问题上系统设计人员是如何处理的,从而确保系统设计的正确性。而现在的设计方法不能使 设计人员方便迅速的解决这些疑惑。甚至这些疑惑是系统设计人员也不曾考虑过,这可能导致系统要重新进行设计。

3.在系统设计被实现以前,设计人员还可以通过用System C设计的系统可执行规范来验证整个系统设计。这样可以避免由于在系统设计上的失误,而使系统实现不能达到要求。现在的设计方法不能提供这样的手段在设计完 成前进行系统的验证,对系统的验证必须是在系统设计完后。即使在完成前进行验证,由于不能完全模拟实际系统的工作,其结果也只能作为一种参考。

4.System C设计的可执行规范所使用的TESTBENCH文件可以通过小范围的修改或直接用在实现后的系统仿真。这就为设计实现人员带来很大的好处,他们不必花很多 的时间去编写用来验证实现后系统正确性的TESTBENCH文件。而现在采用的设计方法所使用的TESTBENCH文件却没有提供这样的便利条件。这是应 为软件设计人员和硬件设计人员两者的设计思想和设计手段都是不同的,一个软件设计人员所使用的TESTBENCH文件并不能被硬件设计人员使用,甚至不能 给硬件设计人员任何帮助。

三、SYSTEM C设计与传统设计比较


现在的系统设计一般是由系统工程师用C语言或C++语言设计出一个系统模型,并 在系统级层次上检验概念和算法。当这些概念和算法被检验为正确无误时,C/C++模块被分解为功能相对独立的子模块。这些相对对立的子模块由硬件设计人员 手工地转化为VHDL或Verilog语言用以硬件实现。这一个设计流程被显示在图1中。

图1

从图1所示的设计流程中我们可以发现以下几个问题:


1
.人工将C\C++程序转换为HDL程序容易产生错误。在现在的这种设计方法 中,系统工程师先按期望的设计要求设计出一个C模块,并验证这个模块使其达到期望的设计要求。然后系统工程师所设计的C模块被硬件设计人员手工转换为 HDL模块。这个转换过程不仅容易产生错误,而且还很浪费时间。这是因为C\C++语言和HDL语言有着显著的区别。首先,HDL的处理方式比C\C++ 的复杂。C\C++程序采用顺序执行的处理方式,而HDL程序中既有顺序执行也有并行执行的处理方式。要将C\C++程序转化为HDL程序必然要引入一些 控制信号,由这些信号控制HDL程序的运行,但这样也容易产生错误。其次,C\C++语言不涉及到时序关系。由于C\C++语言不支持对时序的描述,系统 工程师设计的系统模型只是验证了概念和算法,而只能对时间耗费上有一个大概的估计。这就使得硬件实现时,为满足系统在时间上的要求,硬件设计人员必须对软 件算法进行一定的改造或优化。而这些改造或优化也有可能引入各种错误。


2
.系统模块和HDL模块间缺乏联系。当系统模块被转换为HDL模块后,HDL 模块成为整个系统设计的焦点。为适应硬件实现的特点,硬件设计人员会更改系统设计人员的设计,但这种更改只是在HDL模块中进行,而系统设计人员设计的C 模块并没有因此更改。这就使得系统工程师设计的C模块和当前硬件设计人员设计的HDL模块缺乏必要的联系。当硬件设计人员遇到概念模糊或理解错误的地方 时,往往不能马上从C模块中得到明确的解答。此时,C模块的设计人员也不一定能为HDL设计人员提供有效的帮助。


3
.多系统测试。不但C模块要转换为HDL模块,对C模块的测试也要人工转换为 在HDL环境下的测试。这种转换也很复杂,而且浪费时间。HDL设计人员是根据他所设计的HDL模块和系统要求来设计TESTBENCH,这使得硬件设计 人员不可能利用软件设计人员所使用的测试文件。同时,HDL人员要设计出一个好的TESTBENCH也需要比较长的时间。
为解决在现在设计流程中所带来的种种弊端,一种全新的设计流程被提出,这就是System C设计流程。它能很好的解决上面所提到的各种设计弊端,大大提高设计效率。图2是System C的硬件设计流程。

图2


这种设计方法与现在常用的设计方法相比有很多优点:


1
.精炼的设计方法。使用System C设计系统,系统设计人员不必花费很大的精力将整个系统设计由C语言描述转换为HDL描述。系统设计人员可以通过在C模块中很小的区域范围内加入必要的硬 件和时序结构描述,从而将C模块方便准确地转化为一个有效的硬件设计,而避免将另行设计一个硬件模块。利用System C设计方法,设计人员可以很轻松地实现一个设计的更改,或在优化算法时检测出一些设计错误并及时修改。

2.单一语言书写。使用System C设计系统,整个设计都用一种语言设计系统,降低了对设计人员的要求,减少了语言转换时所造成的错误。这一优点也使得设计人员可以在一个比较高的层次上进 行系统模块设计。在较高层次的设计会导致产生小的设计代码,使设计和仿真的速度比传统的设计方法要快很多。这一点是很显著的。

 

四、SYSTEM C基本概念


1
.模块

模块是System C设计中的基本设计单元。模块可以使得设计者将一个复杂的系统分割为一些更小但易于管理的部分。System C模块的功能和作用与HDL语言中的模块是相类似的,这使得一位习惯于用HDL进行设计的设计人员可以很容易的转向用System C进行设计。
模 块在System C中的关键字为SC_MODULE。紧跟着关键字后的是模块的名称,如SC_MODULE(fifo),这就定义了一个叫fifo的模块。定义的模块也可 以像HDL语言一样包含端口、信号、其它模块、处理过程和结构体,这些单元实现用以实现模块的功能。通过端口可以将几个模块连接起来。
模块被保存为.h文件。如果在一个模块中调用其它模块,只需像C++中引入库一样将要调用的模块作为一个库引入即可。


2
.过程

模块中的处理过程(process)类似于C语言中的子程序,与C语言中的子程序不同的 的是它具有HDL语言中的触发功能。处理过程(process)的具体工作部分被保存为.cpp文件。处理过程的调用类似于在C语言中子程序的调用。根据 不同的要求,SystemC中有三种处理过程。

● Methods : SC_METHOD()
● Threads : SC_THREAD()
● Clock Threads : SC_CTHREAD()

SC_METHOD是用来描述组合逻辑,它由输入信号的变化触发,但不能在两次调用中保 存控制状态。并且在SC_METHOD中不能包含无限循环。由于组合逻辑有可能导致毛刺的产生,从而影响系统性能,所以SC_METHOD不易太复杂。 下面是一个简单的SC_METHOD例子:


SC_MODULE(example) {
sc_in<bool> din;
sc_out<bool> dout;//
端口
void inverter();//处理过程声明
SC_CTOR(example) {
SC_METHOD(inverter);
sensitive(din);//处理过程由输入变化触发
}
};


处理过程inverter如下:
void example::inverter() {
bool internal;
internal = din;//输入数据取反后由输出端口输出
dout = ~internal;
}


SC_THREAD
是最常用的处理过程,基本上可以用在任何地方。它是由输入信号的变化触发,但与SC_METHOD不同的是它可以在两次调用这保存控制状态。它的功能类似于积存器的功能。SC_THREAD中可以包含有wait()函数,这使得处理过程可以被挂起。
SC_CTHREAD 是SC_THREAD的一种特殊情况。SC_CTHREAD能产生更好的综合效果。SC_CTHREAD中可以使用wait()函数。在不同的状态间加入 wait()函数,设计人员可以用SC_CTHREAD来实现状态机。这种设计风格是简便的而且容易理解。SC_CTHREAD只能由时钟信号沿触发,而 SC_THREAD可以由其它非时钟信号触发。如果在时钟上跳边触发,可以使用pos()函数,反之用neg()。
为进一步说明SC_CTHREAD,下面给出了一个SC_CTHREAD的例子。


SC_MODULE(example) {
sc_in_clk clock;//
输入时钟
sc_in<bool> trigger, din;
sc_out<bool> dout;
void invert();
SC_CTOR(example) {
SC_CTHREAD(toggler, clock.pos());//时钟上升沿触发
}
}

void example::invert() {
bool last = false;
for (;;) {
wait_until(trigger.delayed() == true);//
等到下个时钟上升沿 //且trigger=1再执行
last = din; dout = last; wait();
last =~din; dout = last;wait();//下个上升沿才更改数据
}
}


3
.端口与信号

与HDL语言相似,使用System C库就可以在C程序中加入端口和信号。这些原先C语言中没有的功能,使设计更复合硬件设计的要求。
模 块与模块之间是通过端口信号加一联系。只要两个端口被连接在一起,信号就可以在它们之间进行传递。对于这一点习惯用HDL进行设计的设计人员是很容易理解 和接受的,因为这和HDL中端口的功能是一样的。 信号只是在一个模块的内部使用,这也是和HDL中信号的用法是一致的。 下面给出端口和信号声明的例子。


sc_in<“
类型”> din// 输入端口din
sc_out<“类型”> dout// 输出端口dout
sc_inout<“类型”> q// 输入输出端口q
sc_signal<sc_logic> i[16]; //创建一个具有16比特的逻辑型信号i

4.数据类型

考虑到硬件设计的要求,System C中也加入了一些硬件设计中常用的数据类型。具体如下:

sc_int 有符号整数类型,最大有64个比特位。
sc_uint 无符号整数类型,最大有64个比特位。
sc_bigint 有符号整数类型,任意比特位,其最大比特位定义在
sc_constants.h中。
sc_biguint 无符号整数类型,任意比特位,其最大比特位定义在
sc_constants.h中。
sc_bit 二值数据,单比特位。
sc_logic 四值数据,单比特位。
sc_bv 二值数据,任意比特位。
sc_lv 四值数据,任意比特位。
sc_fixed 参数固定的有符号定点数。
sc_ufixed 参数固定的无符号定点数。
sc_fix 参数不固定的有符号定点数。
sc_ufix 参数不固定的无符号定点数。
User defined structs 用户自定义结构


以上是一些System C的基本概念。


五、结论

System C是一种很有效的设计方法,它不仅可以帮助设计人员完成一个复杂的系统设计,还可以避免传统设计中的各种弊端,并提高设计人员的工作效率。它的这些优点使 System C在复杂的系统设计中大有作为。并且习惯用HDL的设计人员,可以很容易地转到用System C设计。





关键词: System     语法     设计     方法     语言     算法    

工程师
2025-08-03 20:26:08     打赏
2楼

谢谢分享


工程师
2025-08-03 20:30:18     打赏
3楼

谢谢分享


工程师
2025-08-03 20:33:12     打赏
4楼

谢谢分享


工程师
2025-08-03 20:35:57     打赏
5楼

谢谢分享


工程师
2025-08-03 20:38:55     打赏
6楼

谢谢分享


工程师
2025-08-03 20:42:15     打赏
7楼

谢谢分享


工程师
2025-08-03 23:54:03     打赏
8楼

讲解的还是挺不错的


专家
2025-08-03 04:25:44     打赏
9楼

谢谢分享


专家
2025-08-03 06:22:31     打赏
10楼

谢谢分享


共25条 1/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
人五人六是什么意思 hys是什么意思 东华帝君的真身是什么 入睡难一般是什么原因造成的 后入什么意思
什么眼镜框最轻最舒服 happy halloween是什么意思 乙状结肠冗长是什么意思 梅毒检查挂什么科 苡字取名寓意是什么
慢性胆囊炎吃什么药 惊蛰是什么季节的节气 玉佛寺求什么最灵验 恶搞是什么意思 可可粉是什么东西
夏天为什么容易拉肚子 刘备的武器是什么 赴汤蹈火的汤是什么意思 跌打损伤用什么药好得快 心脏房颤吃什么药好
写意是什么意思520myf.com 什么话是世界通用的hcv9jop2ns5r.cn 吃六味地黄丸有什么好处hcv8jop4ns7r.cn 乌龟浮水是什么原因hcv8jop5ns2r.cn 白球比偏低是什么意思hcv7jop6ns4r.cn
7月31号是什么星座hcv8jop9ns3r.cn 睡觉手麻木是什么原因hcv8jop9ns1r.cn 长乘宽乘高算的是什么hcv9jop0ns0r.cn 更年期补钙吃什么钙片好hcv9jop4ns2r.cn pin是什么shenchushe.com
20年是什么婚姻hcv7jop9ns5r.cn 朱雀玄武是什么意思hcv8jop7ns6r.cn o型血和b型血的孩子是什么血型hcv9jop0ns6r.cn 日逼是什么意思hcv9jop2ns0r.cn 肺气不足吃什么药hcv8jop4ns8r.cn
七月二十六是什么星座gangsutong.com 梦见小牛犊是什么预兆hcv7jop9ns7r.cn 视力sca分别代表什么aiwuzhiyu.com 伊维菌素是什么药hcv8jop9ns7r.cn 弯脚杆是什么意思hcv8jop4ns0r.cn
百度