求助verilog大神,将c程序转为verilog程序

爱学习的小二哥 2016-04-11 08:10:18
求助verilog大神,将下面的c程序转为verilog程序

#include <stdio.h>
#include <stdlib.h>

int f0(int, int, int);
int f1(int, int, int);
int f2(int, int, int);
int f3(int, int, int);

int main(int argc, char ** argv)
{
unsigned int s[5]={0X12345678,0X23456789,0X3456789A,0X456789AB,0X56789ABC};
unsigned int h[4]={0X11223344,0X22334455,0X33445566,0X44556677};
unsigned int M[48];
unsigned int z,i;
unsigned int a, b, c, d, e;
unsigned int U;
FILE *source, *result;

/* for(z=0;z<8;z++)
{
printf("%d\n", z);
scanf("%x",&M[z]);
}
*/
if(argc != 3){
printf("Usage: rng source_file result_file.\n");
return 1;
}

if((source = fopen(argv[1], "rb")) == NULL){
printf("Error! Can't open %s for read. \n", argv[1]);
return 1;
}

if((result = fopen(argv[2], "wb")) == NULL){
printf("Error! Can't open %s for write. \n", argv[2]);
return 1;
}

while(!feof(source)){

for(z=0;z<8;z++)
{
fscanf(source, "%x", &M[z]);
printf("Data readed is %08X\n", M[z]);
//fread(&M[z], sizeof(unsigned int), 1, source);
}

for(z=8;z<48;z++)
{
M[z]=((M[z-1]^M[z-2]^M[z-5]^M[z-8])<<1)|((M[z-1]^M[z-2]^M[z-5]^M[z-8])>>31);
printf("M[%d] is %08X \n", z, M[z]);
}

a = h[0];
b = h[1];
c = h[2];
d = h[3];

for(z=0;z<48;z++)
{
e = (c<<3)|(c>>29);

switch(z%4){
case 0:
U = f0(a,b,e)+d+M[z]+s[z%5];
break;
case 1:
U = f1(a,b,e)+d+M[z]+s[z%5];
break;
case 2:
U = f2(a,b,e)+d+M[z]+s[z%5];
break;
case 3:
U = f3(a,b,e)+d+M[z]+s[z%5];
break;
default:
printf("Error!\n");
return 1;
}

d = c;
c = b;
b = (a<<23)|(a>>9);
a = U;

//if(z == 46){
printf("z=%d : ", z);
printf("%08X", d);
printf("%08X", c);
printf("%08X", b);
printf("%08X", a);
printf("\n");
//}

}

h[0] = h[0]+a;
h[1] = h[1]+b;
h[2] = h[2]+c;
h[3] = h[3]+d;

for(z=0;z<4;z++)
{
printf("%08X", h[z]);
}
printf("\n");

printf("%08X", d);
printf("%08X", c);
printf("%08X", b);
printf("%08X", a);
printf("\n");

for(z=0;z<4;z++)
{
fprintf(result, "%08X\n", h[z]);
}
printf("\n");

//printf("s4 is %X\n", s[4]^s[0]);
//printf("s4 is %X\n", ((s[4]<<1)|(s[4]>>31)));

} //while

fclose(source);
fclose(result);

return 0;
}

int f0(int a , int b, int c)
{
return a^b^c;
}

int f1(int a , int b, int c)
{
return (a&b)|(~a&c);
}

int f2(int a , int b, int c)
{
return a^(b|~c);
}

int f3(int a , int b, int c)
{
return (a&b)|(b&c)|(c&a);
}
...全文
1407 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36749742 2019-04-02
  • 打赏
  • 举报
回复
厉害厉害厉害厉害厉害厉害
sinat_41881129 2018-04-18
  • 打赏
  • 举报
回复
这也能编译通过?估计是 xilinx那个高级语言编译的那个吧
  • 打赏
  • 举报
回复
对呀,写成ise能编译通过的!
  • 打赏
  • 举报
回复
这个...VHDL操作文件?

3,423

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧