当前位置: 首页 > news >正文

网站建设与网页设计大作业接广告的平台

网站建设与网页设计大作业,接广告的平台,华为商城网站设计,邯郸微信小程序制作公司导读: 本文将完整演示基于systemC编写一个全加器的测试平台。具体内容包括:激励平台,监控平台,待测单元的编写,波形文件读取。 1,main函数模块 搭建一个测试平台主要由:Driver, Monitor, DUT(design under …

导读: 本文将完整演示基于systemC编写一个全加器的测试平台。具体内容包括:激励平台,监控平台,待测单元的编写,波形文件读取。

1,main函数模块

        搭建一个测试平台主要由:Driver, Monitor, DUT(design under test)几个模块,以及一个main文件来启动和连接它们。

        如下main函数,

1)首先声明了全加器需要的5个输入输出信号sc_signal <bool> t_a, t_b, t_cin, t_sum, t_cout。

这些信号是把Driver, Monitor, full_adder几个模块连起来的重要接口,比如driver把数据不断的传给t_a, t_b, t_cin,然后full_adder对这3个信号敏感,产生结果信号传给t_sum, t_cout,而monitor对所有的5个信号都敏感,不断监控它们的变化情况; 

2)创建了full_adder,monitor, driver的3个实例,并把它们各自需要的信号接口传给自己的实例。等于把信号接口都连接起来了。

3)创建了波形记录文件的实例。在这里定义波形文件里会保存的信号名字。

4)设定仿真时间,开启仿真。

        主函数main文件full_adder_main.cpp如下:

#include "full_adder_driver.h"
#include "full_adder_monitor.h"
#include "full_adder2.h"int sc_main(int argc, char* argv[])
{sc_signal <bool> t_a, t_b, t_cin, t_sum, t_cout;full_adder2 f1("FullAdderWithHalfAdder");f1(t_a, t_b, t_cin, t_sum, t_cout);driver d1("GenerateWaveforms");d1(t_a, t_b, t_cin);monitor mo1("MonitorWaveforms");mo1(t_a, t_b, t_cin, t_sum, t_cout);if(!mo1.outfile){cerr << "ERROR: Unable to open output file," << "full_adder.out!\n";return(-2);}sc_trace_file *tf = sc_create_vcd_trace_file("full_adder");sc_trace(tf, t_a, "A");sc_trace(tf, t_b, "B");sc_trace(tf, t_cin, "CarryIn");sc_trace(tf, t_sum, "Sum");sc_trace(tf, t_cout, "CarryOut");sc_start(100, SC_NS);sc_close_vcd_trace_file(tf);return 0;}

2,DUT函数模块

全加器的设计模块文件full_adder2.h如下:

#include "systemc.h"SC_MODULE(full_adder2){sc_in<bool> a, b, carry_in;sc_out<bool> sum, carry_out;void full_addr_prc();SC_CTOR(full_adder2){SC_METHOD(full_addr_prc);sensitive <<a <<b <<carry_in;}};void full_adder2::full_addr_prc()
{sum = a^b^carry_in;carry_out = a & carry_in | b & carry_in | a &b;}

3,Driver函数模块

激励模块文件full_adder_driver.h如下:

#include <iostream>
#include <fstream>
#include "systemc.h"SC_MODULE(driver){sc_out <bool> d_a, d_b, d_cin;ifstream infile;void driver_prc();SC_CTOR(driver){SC_THREAD(driver_prc);infile.open("../data/full_adder_driver_data.in"); //the data path is right when you are running exec program in 'build' folder.if(!infile){cerr << "in driver, Error: Unable to open vector file, full_adder_driver_data.in! \n";sc_stop();}}~driver(){infile.close();}};void driver::driver_prc(){bool t_a, t_b, t_cin;while(infile >> t_a >> t_b >> t_cin){d_a.write(t_a);d_b.write(t_b);d_cin.write(t_cin);wait(5, SC_NS);}}

激励数据文件full_adder_driver_data.in

1 1 0
1 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
1 1 0
1 0 1
1 0 0
0 1 1
0 1 0
0 0 1
0 0 0

 

4,Monitor函数模块 

监测模块文件full_adder_monitor.h如下:

#include <iostream>
#include <fstream>
#include "systemc.h"SC_MODULE(monitor){sc_in<bool> m_a, m_b, m_cin, m_sum, m_cout;ofstream outfile;void monitor_prc();SC_CTOR(monitor){SC_METHOD(monitor_prc);sensitive << m_a << m_b << m_cin << m_sum << m_cout;outfile.open("full_adder.out"); //the out file can be find in your exec program folder path.}~monitor(){outfile.close();}};void monitor::monitor_prc()
{outfile << "At time: " << sc_time_stamp() <<"::";outfile <<"(a, b, carry_in): ";outfile << m_a << m_b << m_cin;outfile << " (sum, carry_out): " << m_sum << m_cout << "\n";}

 5,测试程序执行演示

1,需要你自己提前配置好SystemC的相关库。

2,将上面4个文件写好,并编译通过,生成一个可执行文件。

3,执行文件,生成full_adder.vcd和输出full_adder.out文件

注意点:

1, 在driver模块中,SC_THREAD(driver_prc)这里要用SC_THREAD,而不能用SC_METHOD,因为里面有while语句,需要程序能够挂起,如果用SC_METHOD则monitor只能执行一次。

2,如果激励数据从文件中读取,需要注意文件路径是否正确。比如main函数里定义了full_adder.out是在执行程序的路径,在driver文件里定义了激励输入文件的路径("../data/full_adder_driver_data.in"),需要确认自己的路径是否正确。

6,仿真波形记录文件读取

        可以通过安装gtkwave来查看生成的波形文件,如下是linux下安装和打开波形文件:

sudo apt-get install gtkwavegtkwave full_adder.vcd

http://www.khdw.cn/news/43576.html

相关文章:

  • 公司网站建设应注意什么优化搜狗排名
  • 宁德建设银行网站新手怎么开始做电商
  • 网站建设课后感网络推广平台公司
  • 有什么做数据的网站营销策略ppt模板
  • 网站不备案能用吗俄罗斯搜索引擎浏览器
  • 兼职做ppt是哪个网站好h5制作网站
  • 单位邮箱怎么查询google关键词seo
  • php 企业网站怎么免费建立网站
  • 江西营销网站建设佛山seo网站排名
  • 免费作文网站怎么才能在百度上打广告
  • 文化管 网站建设规划连云港网站seo
  • 可以用来做论文引用的网站充电宝seo关键词优化
  • 企业网站免费建站程序如何做营销推广
  • wordpress导出全站链接seo知识总结
  • 佛山做网站的公司哪里可以学企业管理培训
  • 网站建设网站推广最近的国内新闻
  • 网站规划总结好用的搜索引擎有哪些
  • 德化住房和城乡建设网站石家庄百度快速排名优化
  • 金堂企业网站建设电商网站链接买卖
  • wordpress自豪地采用修改重庆seo点击工具
  • 免费微网站开发平台网络营销推广的方式
  • 手把手做网站软文自动发布软件
  • 克隆视厅网站怎么做怎么关键词优化网站
  • 吴中区建设局网站现在的网络推广怎么做
  • 建站网站 国外搜索引擎营销例子
  • 网页设计网站开发需要什么百度添加到桌面
  • 天津网站建设小程序模板
  • wordpress分享卡片插件专业seo网站优化推广排名教程
  • 屏蔽某网站怎么做深圳龙岗区布吉街道
  • 网站建设难做吗网络推广都需要做什么