专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
FPGA
cpld 做两路串口的切换
2020-02-03 11:14
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
FPGA
5292
12
12
cpld 做两路串口的切换 : 串口通过CPLD 后,接收到的数据 多了好多00000000 改怎么处理 如下图:,中间选中的,为有用的数据,其他好多无用的00,程序仅是通过 按键做两路 串口的切换。
assign xutxd1_c = (state_code == 1'b0)?xutxd2:sa_xutxd1;
assign xurxd1_c = (state_code == 1'b0)?xurxd2:sa_xurxd1;
改怎么处理才不会收到这么多无用的数据?求大神们指教!!
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
297229936
2020-02-04 12:07
玄德 发表于 2016-8-15 10:15
20ns的抖动处理
不是毫秒?
按键部分的代码:
reg[3:0]keyr;
always@(posedge clk or negedge key_rst)
if(!key_rst)keyr<=4'b1111;
else keyr <= {keyr[2:0],key_sel};
wire key_pos = keyr[2]&~keyr[3];
wire key_neg = ~keyr[2]&keyr[3];
reg[19:0] cnt;
always@(posedge clk or negedge key_rst)
if(!key_rst)cnt <= 20'd0;
else if(key_neg||key_pos) cnt <= 20'd0;
else if(cnt <=20'd999_999)cnt <= cnt +1'b1;
else cnt <= 20'b0;
reg[1:0]key_value;
always@(posedge clk or negedge key_rst)
if(!key_rst) key_value[0] <= 1'b1;
else if(cnt==20'd999_999)key_value[0] <=keyr[3];
always@(posedge clk or negedge key_rst)
if(!key_rst)key_value[1] <=1'b1;
else key_value[1] <= key_value[0];
wire led_ctrl = ~key_value[0]&key_value[1];
always@(posedge clk or negedge key_rst)
begin
if(!key_rst)
state_code <=1'b0;
else
begin
if(led_ctrl)
begin
if(state_code == 1'b1)
state_code <= 1'b0;
else
state_code <= 1'b1;
end
end
end
请指导,为什么会出现那么多00?
加载中...
查看其它12个回答
一周热门
更多
>
相关问题
如何用FPGA驱动LCD屏?
5 个回答
请教一下各位专家如何用FPGA做eDP接口?
6 个回答
FPGA CH7301c DVI(显示器数字接口)没有数字输出
7 个回答
100颗FPGA的板子,开开眼界
6 个回答
求教自制最小系统版
10 个回答
相关文章
嵌入式领域,FPGA的串口通信接口设计,VHDL编程,altera平台
0个评论
Xilinx的FPGA开发工具——ISE开发流程
0个评论
基于FPGA的详细设计流程
0个评论
干货分享,FPGA硬件系统的设计技巧
0个评论
一种通过FPGA对AD9558时钟管理芯片进行配置的方法
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
FPGA
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
按键部分的代码:
reg[3:0]keyr;
always@(posedge clk or negedge key_rst)
if(!key_rst)keyr<=4'b1111;
else keyr <= {keyr[2:0],key_sel};
wire key_pos = keyr[2]&~keyr[3];
wire key_neg = ~keyr[2]&keyr[3];
reg[19:0] cnt;
always@(posedge clk or negedge key_rst)
if(!key_rst)cnt <= 20'd0;
else if(key_neg||key_pos) cnt <= 20'd0;
else if(cnt <=20'd999_999)cnt <= cnt +1'b1;
else cnt <= 20'b0;
reg[1:0]key_value;
always@(posedge clk or negedge key_rst)
if(!key_rst) key_value[0] <= 1'b1;
else if(cnt==20'd999_999)key_value[0] <=keyr[3];
always@(posedge clk or negedge key_rst)
if(!key_rst)key_value[1] <=1'b1;
else key_value[1] <= key_value[0];
wire led_ctrl = ~key_value[0]&key_value[1];
always@(posedge clk or negedge key_rst)
begin
if(!key_rst)
state_code <=1'b0;
else
begin
if(led_ctrl)
begin
if(state_code == 1'b1)
state_code <= 1'b0;
else
state_code <= 1'b1;
end
end
end
请指导,为什么会出现那么多00?
一周热门 更多>