求verilog 时钟选择器 模块有两个时钟,clk1一定存在,clk2不一定存在,clk2存在就输出,否则clk1输出
答案:2 悬赏:60
解决时间 2021-03-22 16:12
- 提问者网友:王者刀枪不入
- 2021-03-21 22:56
最佳答案
- 二级知识专家网友:猖狂的痴情人
- 2021-03-22 00:16
不如用多路选择器,比如二选一多路选择器。设定一个变量sel
sel为一的时候输入时钟为clk1,sel为0的时候输入时钟为clk2。
语法上可以写成
module clock_choice(clk1,clk2,clk);
input clk1,clk2;
output clk;
reg sel;
always@(posedge clk2)
if(clk2) // 默认情况下clk2为低可以这么写,如果默认情况下clk2为高就要写成(!clk2)
sel=1;
else
sel=0;
assign clk=(!sel)?clk1:clk2;
endmodule
sel为一的时候输入时钟为clk1,sel为0的时候输入时钟为clk2。
语法上可以写成
module clock_choice(clk1,clk2,clk);
input clk1,clk2;
output clk;
reg sel;
always@(posedge clk2)
if(clk2) // 默认情况下clk2为低可以这么写,如果默认情况下clk2为高就要写成(!clk2)
sel=1;
else
sel=0;
assign clk=(!sel)?clk1:clk2;
endmodule
全部回答
- 1楼网友:孤伤未赏
- 2021-03-22 01:36
在verilog里不能在多个always里对同一寄存器赋值。
时分秒你可以根据fpga的时钟计算秒的计数,假设设为cnt1,假设cnt=50000时为一秒的时间,可以在这时产生一个脉冲s,通过读取脉冲s的上升沿来计数cnt2,cnt2=60时就是一分,可以再产生一个小时的计数脉冲m,posedge m时cnt3+1,当cnt3=60时就是一小时,这应该能懂吧
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯