赛灵思
直播中

李博

8年用户 132经验值
私信 关注
[问答]

二进制序列检测器选择fpga

  • 即使在看过这么多论坛之后,我一直很困惑为我的二进制序列检测器选择FPGA。最初我想为我的应用程序选择spartan 3E FPGA板,但由于它的成本我拒绝它。我现在对Elbert感兴趣
V2 - Spartan 3A FPGA开发板。设备包是Xc3s50a。我认为它由大约500个门组成,这对我的项目很有用。我可以继续使用它。我也会在这里展示我的代码。
模块melfsmolp(din,reset,clk,y);
输出reg;
输入din;
输入clk;
输入复位;
reg [1:0] cst,nst;
参数S0 = 2'b00,
S1 = 2'b01,
S2 = 2'b10,
S3 = 2'b11;
总是@(cst或din)
开始
案例(cst)
S0:if(din == 1'b1)
开始
nst = S1;
Y = 1'b0;
结束
其他
开始
nst = cst;
Y = 1'b0;
结束
S1:if(din == 1'b0)
开始
nst = S2;
Y = 1'b0;
结束
其他
开始
nst = cst;
Y = 1'b0;
结束
S2:if(din == 1'b1)
开始
nst = S3;
Y = 1'b0;
结束
其他
开始
nst = S0;
Y = 1'b0;
结束
S3:if(din == 1'b0)
开始
nst = S2;
Y = 1'b1的;
结束
其他
开始
nst = S1;
Y = 1'b0;
结束
默认值:nst = S0;
ENDCASE
结束
永远@(posedge clk)
开始
如果(重置)
CST

回帖(7)

张颖

2020-3-23 06:24:55
有关板/设备选择问题,请联系我们的Xilinx /分销商现场应用工程师(FAE)。
它们将帮助您更好地选择器件/电路板。
您可以从以下链接http://www.xilinx.com/company/sales/ww_disti.htm获取它们的详细联系信息。
(该链接可以指向http://www.xilinx.com/company/contact/auth-disti-table.htm)
你和他们联系了吗?
_______________________________________________如果有助于解决您的查询,请将此帖子标记为“接受为解决方案”。
因此,它将有助于其他论坛用户直接参考答案。如果您认为该信息有用且面向答复,请给予此帖子称赞。
举报

陈舒斌

2020-3-23 06:43:57
嗨,
对于想要用HDL学习数字设计基础知识的初学者来说,这个板就足够了。
但是,在计算FPGA资源时,“门”并不是一个有用的措施。
更好地参考LUT和FF或切片。
要了解设计所需的资源,只需将其合成到您喜爱的FPGA系列的任何目标。
综合报告(或设计摘要)将显示所需的LUTS和FF数量。
从数据表(FPGA系列概述)中,您可以推导出哪个器件具有足够的资源。
您提供的源显示了一个简单的Mealy FSM,它占用2个FF和几个LUT。
XC3S50拥有比此设计所需的资源更多的资源,但......
你打算如何提供数据?
您是否有数字信号源或是否要使用某些按钮或开关。
你知道机械开关引起的弹跳效应吗?
在这种情况下,你需要一些去抖电路。
由于必须实现一些大型时钟分频器,因此该电路将比FSM大。
有一个很好的综合 
Eilert
举报

尚文清

2020-3-23 06:50:58
二进制序列检测器是一个基本的应用程序,它需要一些时钟,输入(按钮)和输出(LED)。我有必要为我的包括去抖动电路,时钟分频器等。我甚至不知道
所有这些东西。我已经完成了综合,我也创建了编程文件。我只需要设计一个ucf文件并将程序上传到fpga板上以便工作。最初我想买Spartan 3E板但是因为
它非常昂贵,我应该购买Elbert V2 - Spartan 3A FPGA开发板。我可以继续购买它。请告诉你的建议。
举报

陈舒斌

2020-3-23 07:03:30
嗨,
去抖对你的项目非常重要。
我们先来看看时钟。
通常,您的电路板上有一个时钟振荡器,它将为FPGA提供几MHz的时钟信号。
现在,如果您要从交换机输入数据,您将如何在纳秒内切换?
您的FSM期望每个上升时钟边沿有一个新位。
虽然辩手可以帮助你缩短冲动,但它无法处理两次按钮推动之间的暂停。
您无法以这种方式创建有用的数据流。
通过设置一些综合和实现选项,可以使用按钮来提供时钟脉冲。
但问题出现了:由于弹跳按钮,每按一次/释放循环不会产生一个时钟脉冲,但脉冲数量不明。
因此,您的FSM总是向前推进许多州。
如果您实现计数器并使用手动按钮提供时钟,则可以看到最佳效果。
每次按下和释放时,计数器将向前移动3到10个++步(取决于按钮的机械属性)。
所以有必要使用时钟振荡器并有一些去抖动电路,确保每次按键按下都会导致一次转换。
这样您就可以提供干净的手动时钟和数据信号来测试您的FSM。
然而,这仅适用于小电路,因为时钟信号将通过正常的路由资源而不是全局时钟网络进行路由。
对于较大的电路,您可以使用振荡器时钟进行设计,并在每次按下按钮时以1个时钟周期的脉冲输入FF的CE输入。
如果你在论坛上搜索“debouncing”,你会发现很多关于这个主题和一些代码示例的讨论。
有一个很好的综合 
Eilert
举报

更多回帖

发帖
×
20
完善资料,
赚取积分