在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6407|回复: 9

[求助] 怎么将c语言的循环转成verilog?

[复制链接]
发表于 2018-8-11 08:38:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 zqq624723237 于 2018-8-13 21:11 编辑

例如有如下c代码:int acc(int a)
int s=0;
for(i=0;i<a;i++)
{
    s+=i;
}
return s;

怎么用时序逻辑描述?组合逻辑呢?
这是某IC公司的一道笔试题,考察硬件思维,答案肯定不唯一,希望各位大佬们能够集思广益,从PPA方面分析一下。
小白在此谢过!
发表于 2018-8-13 14:13:05 | 显示全部楼层
参见 Xilinx Vivado HLS,利用这个平台可以自动将c 、c++、 systemc 代码转换成verilog 和 vhdl 代码
 楼主| 发表于 2018-8-13 18:13:00 | 显示全部楼层
本帖最后由 zqq624723237 于 2018-8-13 18:15 编辑

回复 2# cacc


   谢谢您,不只是单纯的c转verilog。这个是笔试题,问怎么用时序和组合逻辑实现,并画出电路图。应该是要用硬件的思维,希望大家一起集思广益,有哪些实现方案?
发表于 2018-8-13 19:28:00 | 显示全部楼层
1.时序逻辑你可以把i想象成clock,每一个clock累加一次
2.组合逻辑你可以把i想象成一个加法单元,最后若干个串在一起
 楼主| 发表于 2018-8-13 21:10:25 | 显示全部楼层
回复 4# richardxingxing


   可以这样想,但是这里循环次数是由输入控制的,不符合Verilog语法。定义parameter可以解决,但是不符合题意。一样的输入得到一样的输出。
发表于 2018-8-14 16:45:40 | 显示全部楼层
回复 1# zqq624723237


  假如A是四位,则做一个加法器,然后用clock将结果存到四位寄存器。然后输出就是四位寄存器四位寄存器同时和A做判断,当等于的时候(这个是一个组合电路)关掉clock。
 楼主| 发表于 2018-8-14 18:58:52 | 显示全部楼层
回复 6# fhy420462303


   或许您没有理解我的意思,输入a控制了循环次数,您在这里将加法器结果用来控制时钟,应该是想累加和到a之后停止吧,实际是需要自加a次。其实一种思路是这个循环实际是一个高斯求和,结果是a(a-1)/2。除法移位就可以了,我只是不清楚这里的乘法怎么处理,不知道能不能直接assign。我也是不太理解出题官的考察思路。
发表于 2018-8-14 22:06:35 | 显示全部楼层
做法太多了,可以用时序电路,也可以直接用组合电路
发表于 2018-8-15 16:34:09 | 显示全部楼层
回复 7# zqq624723237


    哦  ,是我没有搞清楚。
用加法器,然后用clock将结果存到寄存器,然后将寄存器的输出接到加法器的一段口。
加法器另一端为1,然后做个计数器,技术到a ,就将寄存器的clock关掉!
发表于 2018-12-16 13:32:58 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 22:56 , Processed in 0.022330 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表