[Actel FPGA] 一个使用VHDL实现十分频的低级问题

[复制链接]
 楼主| shen8103 发表于 2009-5-16 16:49 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;&nbsp;一个是希望让其输出为初始值“1”,一个是希望计数器cnt初始不为0从而实现移相,可是在定义的后面加:=赋值模拟出来的波形居然是一样的,郁闷死我了。请大虾指教一下问题出在什么地方呀?谢谢了!<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;这么简单的东西搞了一个下午搞不定,真是惭愧呀=.=<br /><br />下面是代码:<br />library&nbsp;ieee;<br />use&nbsp;ieee.std_logic_1164.all;<br />use&nbsp;ieee.std_logic_unsigned.all;<br /><br />entity&nbsp;div5_5&nbsp;is<br />&nbsp;&nbsp;&nbsp;&nbsp;port(clk:&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std_logic;<br />&nbsp;&nbsp;&nbsp;&nbsp;div10:&nbsp;&nbsp;&nbsp;&nbsp;out&nbsp;&nbsp;&nbsp;&nbsp;std_logic);<br />end;<br /><br />architecture&nbsp;one&nbsp;of&nbsp;div5_5&nbsp;is<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;signal&nbsp;cnt&nbsp;&nbsp;&nbsp;&nbsp;:std_logic_vector(2&nbsp;downto&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;signal&nbsp;clk_temp&nbsp;&nbsp;&nbsp;&nbsp;:std_logic;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;signal&nbsp;d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:std_logic;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constant&nbsp;m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:integer:=4;<br /><br />begin<br />process(clk)<br />begin<br />if&nbsp;clk'event&nbsp;and&nbsp;clk='1'&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;cnt=m&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clk_temp&lt=not&nbsp;clk_temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt&lt=&quot;000&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt&lt=cnt+1;<br />&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if;<br />end&nbsp;if;<br />end&nbsp;process;<br /><br />div10&lt=clk_temp;<br />end;<br />
zlgactel 发表于 2009-5-19 15:41 | 显示全部楼层

发现一个错误,

if&nbsp;cnt=m&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clk_temp&lt=not&nbsp;clk_temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt&lt=&quot;000&quot;;<br />end&nbsp;if;<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt&lt=cnt+1;<br />&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if;<br /><br />注意第一个end&nbsp;if,很久没用VHDL,其余的错误有待你自己发现,如果要赋初值,加入以复位信号即可。<br />
usber 发表于 2009-5-20 12:58 | 显示全部楼层

路过

  
 楼主| shen8103 发表于 2009-5-26 11:23 | 显示全部楼层

谢谢

  
vxxw 发表于 2009-5-26 16:27 | 显示全部楼层

可以通过别的方法移相

library&nbsp;ieee;<br />use&nbsp;ieee.std_logic_1164.all;<br />use&nbsp;ieee.std_logic_unsigned.all;<br />use&nbsp;ieee.std_logic_arith.all;<br /><br />entity&nbsp;div5_5&nbsp;is<br />&nbsp;&nbsp;&nbsp;&nbsp;port(clk:&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std_logic;<br />&nbsp;&nbsp;&nbsp;&nbsp;div10:&nbsp;&nbsp;&nbsp;&nbsp;out&nbsp;&nbsp;&nbsp;&nbsp;std_logic);<br />end;<br /><br />architecture&nbsp;one&nbsp;of&nbsp;div5_5&nbsp;is<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;signal&nbsp;cnt&nbsp;&nbsp;&nbsp;&nbsp;:integer&nbsp;rang&nbsp;0&nbsp;to&nbsp;9;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;signal&nbsp;clk_temp:std_logic;<br />begin<br />process(clk,cnt)<br />begin<br />if&nbsp;clk'event&nbsp;and&nbsp;clk='1'&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;cnt&lt9&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt&lt=cnt+1;<br />else&nbsp;cnt&lt=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if;<br />if&nbsp;cnt&lt5&nbsp;then&nbsp;clk_temp&lt='1';<br />else&nbsp;clk_temp&lt='0';<br />end&nbsp;if;<br />end&nbsp;process;<br /><br />div10&lt=clk_temp;<br />end&nbsp;one;<br /><br /><br />
yxhyxh 发表于 2009-6-1 11:58 | 显示全部楼层

呵呵,是这里错了

cnt&lt=cnt+1;<br />改成<br />cnt&lt=cnt+'1';<br /><br />VHDL与C不一样哦。<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

252

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

54

主题

252

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部