fpga verilog里一个模块的时钟有2种以上的选择 ,怎么实现 5
两种很容易assignclk_out=clk_sel?clk1:clk0;就可以了那要有3种时钟选择时怎么实现??...
两种很容易 assign clk_out=clk_sel?clk1:clk0; 就可以了 那要有3种时钟选择时 怎么实现??
展开
1个回答
展开全部
在always模块里用case语句吧,这样调理清晰,我给个例子,程序贴上来之后排版有点乱,你自己排一下版吧
always @(*)
begin
case(lte_switch)
2'h1 : begin // tx only
txnrx_txon = 1'b1;
enable_rxon = 1'b1;
paon = 1'b1;
lna_on = 1'b0;
rfsw = 1'b1;
end
2'h2 : begin // rx only
txnrx_txon = 1'b0;
enable_rxon = 1'b1;
paon = 1'b0;
lna_on = 1'b1;
rfsw = 1'b0;
end
2'h3 : begin
txnrx_txon = 1'b0;
enable_rxon = 1'b0;
paon = 1'b0;
lna_on = 1'b0;
rfsw = 1'b0;
end
default:begin // normal
txnrx_txon = T2K_GPIO14 ;
enable_rxon = T2K_GPIO0 ;
paon = T2K_GPIO15 ;
lna_on = ~paon ;
rfsw = T2K_GPIO14 ;
end
endcase
end
always @(*)
begin
case(lte_switch)
2'h1 : begin // tx only
txnrx_txon = 1'b1;
enable_rxon = 1'b1;
paon = 1'b1;
lna_on = 1'b0;
rfsw = 1'b1;
end
2'h2 : begin // rx only
txnrx_txon = 1'b0;
enable_rxon = 1'b1;
paon = 1'b0;
lna_on = 1'b1;
rfsw = 1'b0;
end
2'h3 : begin
txnrx_txon = 1'b0;
enable_rxon = 1'b0;
paon = 1'b0;
lna_on = 1'b0;
rfsw = 1'b0;
end
default:begin // normal
txnrx_txon = T2K_GPIO14 ;
enable_rxon = T2K_GPIO0 ;
paon = T2K_GPIO15 ;
lna_on = ~paon ;
rfsw = T2K_GPIO14 ;
end
endcase
end
更多追问追答
追问
always @(*) 是上电 就一直执行这个模块吗? * 代表无条件执行?
程序里哪个的输入 输出变量 都是什么啊?代表什么意思啊?
追答
我看你是很初学的吧,always语句的敏感列表,针对组合逻辑的话,用*表示对后面语句块中所有输入变量的变化都是敏感的。估计你暂时不能理解;
程序的输入输出变量你不要管,那是我自己的程序摘出来的。
你现在可以好好学一下always块语句和case语句的用法,很有用的。找本书来看
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询