博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(原創) 如何寫一個加法器? (C/C++) (SystemC) (IC Design)
阅读量:6923 次
发布时间:2019-06-27

本文共 1128 字,大约阅读时间需要 3 分钟。

Abstract

寫一個硬體的加法器,幾乎就跟軟體的HelloWorld一樣,是最基本的程式,此範例Demo如何用SystemC寫一個加法器。
Introduction
Adder.h

 1
None.gif
#include 
"
SystemC.h
"
 2
None.gif
 3
ExpandedBlockStart.gifContractedBlock.gifSC_MODULE(Adder) 
dot.gif
// Declare Adder Module
 4InBlock.gif  sc_in<int> a,b;  // Declare in port
 5InBlock.gif  sc_out<int> sum; // Declare out port
 6InBlock.gif
 7InBlock.gif  void doAdd();
 8InBlock.gif
 9ExpandedSubBlockStart.gifContractedSubBlock.gif  SC_CTOR(Adder) dot.gif{
10InBlock.gif      SC_METHOD(doAdd);    // Register doAdd process
11InBlock.gif      sensitive << a << b; // specify sensitivity
12ExpandedSubBlockEnd.gif  }
13ExpandedBlockEnd.gif}
;

Adder.cpp

1
None.gif
#include 
"
systemc.h
"
2
None.gif#include 
"
Adder.h
"
3
None.gif
4
ExpandedBlockStart.gifContractedBlock.gif
void
 Adder::doAdd() 
dot.gif
{
5InBlock.gif  sum = a + b;
6ExpandedBlockEnd.gif}

AdderTest.cpp (TestBench)

 1
None.gif
#include 
<
iostream
>
 2
None.gif#include 
"
systemc.h
"
 3
None.gif#include 
"
Adder.h
"
 4
None.gif
 5
None.gif
using
 
namespace
 std;
 6
None.gif
 7
ExpandedBlockStart.gifContractedBlock.gif
int
 sc_main(
int
 argc, 
char
*
 argv[]) 
dot.gif
{
 8InBlock.gif  // Create instance of Adder
 9InBlock.gif  Adder adder("adder");  
10InBlock.gif  // Declare singal in testbench
11InBlock.gif  sc_signal<int> a,b,sum;
12InBlock.gif
13InBlock.gif  // Initialize adder port by constructor
14InBlock.gif  adder.a(a); 
15InBlock.gif  adder.b(b);
16InBlock.gif  adder.sum(sum);
17InBlock.gif
18InBlock.gif  a = 1;
19InBlock.gif  b = 2;
20InBlock.gif
21InBlock.gif  // Start simulation
22InBlock.gif  sc_start(1);
23InBlock.gif  cout << sum << endl;
24InBlock.gif  
25InBlock.gif  return 0;
26ExpandedBlockEnd.gif}

執行結果

1
None.gif
2
None.gif             SystemC 
2.1
.v1 --- Oct 
18
 
2006
 
02
:
34
:
01
3
None.gif        Copyright (c) 
1996
-
2005
 by all Contributors
4
None.gif                    ALL RIGHTS RESERVED
5
None.gif
3
6
None.gifPress any key to continue

转载地址:http://jyecl.baihongyu.com/

你可能感兴趣的文章
Docker私库搭建和使用
查看>>
linux+squid
查看>>
阿里云几种云盘类型如何选择有啥区别
查看>>
1-Centos7.6安装Ceph(luminous)【ceph-deploy安装】
查看>>
MDK使用技巧及bug解决
查看>>
我的友情链接
查看>>
移除button在IE67下的黑边
查看>>
FusionShpere 简介
查看>>
Ubuntu定时执行.sh脚本
查看>>
web服务其一(概念简述)
查看>>
smokeping对网络进行监控
查看>>
祝贺我的博客开通!
查看>>
三大数据库如何获取表中的第m条到第n条记录(n大于m)
查看>>
本博客不在更新
查看>>
MongoEngine文档翻译__新手教程(二)定义文档
查看>>
编写一个简单的C++程序
查看>>
JS禁止浏览器后退键
查看>>
Centos6.3 下安装 Ngixn +tornado + supervisor
查看>>
ModelAndView详解
查看>>
MAC 安装ngnix
查看>>