专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
FPGA
每当 dis_data有变化就产生一个 高脉冲该怎么写啊
2020-02-03 11:07
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
FPGA
13525
6
6
每当 dis_data有变化就产生一个 高脉冲该怎么写啊
我知道我这个写的是不对的,只是做个示范
always @(dis_data)
begin
start <= 1'b0;
start <= 1'b1;
start <= 1'b0;
end
assign start = (dis data1 != dis_data)?1'b1:1'b0;这个也是不行的,因为脉冲宽度不可控。
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
28182900
1楼-- · 2020-02-03 15:51
我是采集输入信号的变化,最好用组合逻辑实现
加载中...
wx85105157
2楼-- · 2020-02-03 21:14
精彩回答 2 元偷偷看……
加载中...
玄德
3楼-- · 2020-02-03 23:21
不明白想达到什么目的,也看不懂这些代码,
有点莫名其妙。
(dis data1 != dis_data),这条件也能成立?
加载中...
hqbenson
4楼-- · 2020-02-04 04:16
楼主您要判别dis_data是否有变化,言下之意就是要判断接下来的dis_data的值与当前值是否不同,那肯定就是时序电路了,肯定要用到寄存器了。
可以将dis_data值用寄存器存一拍,然后输出与输入用一个异或进行判断即可。一个可能可行的代码:
always@(posedge clk)
dis_data_sav<=dis_data;
assign judge=dis_data^dis_data_sav;
assign pulse=judge&(!clk);
注意时钟要取的恰当,高脉冲宽度取决于时钟频率。不过可能不太可靠就是了,随手写的。。。。
加载中...
hqbenson
5楼-- · 2020-02-04 05:27
如果非要用组合逻辑那只能用偶数个非门打一下延迟后输出再与原信号异或一下了:
(*sythesis,keep*)wire not1,not2,not3,not4;
assign not1=~dis_data;
assign not2=~not1;
assign not3=~not2;
assign not4=~not3;
assign pulse=dis_data^not4;
脉冲宽度取决于非门个数和走线延迟,不过也只有几个ns。你输出的信号要是想要给后面的电路捕捉的话那会很不好使,而且宽度要大的话是会消耗大量资源的。所以是建议用个寄存器更好更灵活。
加载中...
一周热门
更多
>
相关问题
如何用FPGA驱动LCD屏?
5 个回答
请教一下各位专家如何用FPGA做eDP接口?
6 个回答
FPGA CH7301c DVI(显示器数字接口)没有数字输出
7 个回答
100颗FPGA的板子,开开眼界
6 个回答
求教自制最小系统版
10 个回答
基于FPGA的X射线安检设备控制器
2 个回答
CycolneIVGX核心板,可扩展PCIE,光纤接口,大家来鉴赏一下
6 个回答
关于VHDL或Verllog程序稳定性的问题
11 个回答
相关文章
嵌入式领域,FPGA的串口通信接口设计,VHDL编程,altera平台
0个评论
Xilinx的FPGA开发工具——ISE开发流程
0个评论
基于FPGA的详细设计流程
0个评论
干货分享,FPGA硬件系统的设计技巧
0个评论
一种通过FPGA对AD9558时钟管理芯片进行配置的方法
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
FPGA
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
我是采集输入信号的变化,最好用组合逻辑实现
不明白想达到什么目的,也看不懂这些代码,
有点莫名其妙。
(dis data1 != dis_data),这条件也能成立?
可以将dis_data值用寄存器存一拍,然后输出与输入用一个异或进行判断即可。一个可能可行的代码:
always@(posedge clk)
dis_data_sav<=dis_data;
assign judge=dis_data^dis_data_sav;
assign pulse=judge&(!clk);
注意时钟要取的恰当,高脉冲宽度取决于时钟频率。不过可能不太可靠就是了,随手写的。。。。
(*sythesis,keep*)wire not1,not2,not3,not4;
assign not1=~dis_data;
assign not2=~not1;
assign not3=~not2;
assign not4=~not3;
assign pulse=dis_data^not4;
脉冲宽度取决于非门个数和走线延迟,不过也只有几个ns。你输出的信号要是想要给后面的电路捕捉的话那会很不好使,而且宽度要大的话是会消耗大量资源的。所以是建议用个寄存器更好更灵活。
一周热门 更多>