赞
踩
前几天参加乐鑫的笔试,遇到一道题目,很有价值,分享给大家。
题目要求是将一个串行执行的C语言算法转化为单拍完成的并行可综合verilog。
C语言源码如下:
unsigned char cal_table_high_first(unsigned char value)
{
unsigned char i ;
unsigned char checksum = value ;
for (i=8;i>0;--i)
{
if (check_sum & 0x80)
{
check_sum = (check_sum<<1) ^ 0x31;
}
else
{
check_sum = (check_sum << 1);
}
}
return check_sum;
}
算法C语言实现:
#include
int main() {
unsigned char cal_table_high_first(unsigned char value);
unsigned char data;
for (unsigned char i = 0; i < 16; ++i)
{
data = cal_table_high_first(i);
printf("value =0x%0x:check_sum =0x%0x \n", i, data);
}
getchar();
}
unsigned char cal_table_high_first(unsigned char value)
{
unsigned char i;
unsigned char check_sum = value;
for (i = 8; i > 0; --i)
{
if (check_sum & 0x80)
{
check_sum = (check_sum << 1) ^ 0x31;
<Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。