1

下面是用于模糊化输入的 C 代码。我一直在尝试将其转换为 verilog 语法,但我在数据类型等方面遇到了很多问题。错误不断堆积。

float fuzzify_MF(float x,a,b,c,d) //x=crisp input 
{ 
float dom; 
if ( x >a && x <b) 
{ dom=(x-a)/(b – a); } 
else if (x>c && x<d) 
{ dom=(d-x)/(d-c); } 
else if (x>=b && x<=c) 
{dom=1.0; } 
else 
{ dom=0; } 
return dom; 
} 
4

3 回答 3

1

为什么不尝试使用 PLI。试试这个链接:PLI 教程

于 2012-05-28T11:56:39.000 回答
0

你可以使用 PLI 来解决这个问题,但是如果你想看起来很酷并且仍然可以解决它,请使用 SystemVerilog 的 DPI。

http://www.project-veripage.com/dpi_tutorial_1.php

于 2012-05-28T20:06:12.920 回答
0

您可以使用 PLI 在 Verilog 中导入“C”函数。

在 C 函数中包含以下头文件:

#include <svdip.h>

现在在 Verilog 模块中:

module top;
  import "DPI-C" context function shortreal fuzzify_MF(shortreal x, shortreal a, shortreal b, shortreal c, shortreal d);
  shortreal t;

  initial
  begin
    t = fuzzify_MF(<Arguments>);
  end    
endmodule

您可以在链接中阅读有关此主题的更多信息:DPI 教程

于 2016-02-14T17:08:34.113 回答