本人菜鸟,有个verilog的条件赋值语句的问题,assign clk_out = (F_DIV == 1) clock :(F_DIV[0] (clk_p_r & clk_n_r) :clk_p_r);F_DIV[0]是什么意思?F_DIV[0]不是一直是0吗?所以就选择clk_p_r?F_DIV == 1又有什么意义?其中:reg
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/01 07:07:48
![本人菜鸟,有个verilog的条件赋值语句的问题,assign clk_out = (F_DIV == 1) clock :(F_DIV[0] (clk_p_r & clk_n_r) :clk_p_r);F_DIV[0]是什么意思?F_DIV[0]不是一直是0吗?所以就选择clk_p_r?F_DIV == 1又有什么意义?其中:reg](/uploads/image/z/7092493-61-3.jpg?t=%E6%9C%AC%E4%BA%BA%E8%8F%9C%E9%B8%9F%2C%E6%9C%89%E4%B8%AAverilog%E7%9A%84%E6%9D%A1%E4%BB%B6%E8%B5%8B%E5%80%BC%E8%AF%AD%E5%8F%A5%E7%9A%84%E9%97%AE%E9%A2%98%2Cassign+clk_out+%3D+%28F_DIV+%3D%3D+1%29+clock+%3A%28F_DIV%5B0%5D+%28clk_p_r+%26+clk_n_r%29+%3Aclk_p_r%29%3BF_DIV%5B0%5D%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%3FF_DIV%5B0%5D%E4%B8%8D%E6%98%AF%E4%B8%80%E7%9B%B4%E6%98%AF0%E5%90%97%3F%E6%89%80%E4%BB%A5%E5%B0%B1%E9%80%89%E6%8B%A9clk_p_r%3FF_DIV+%3D%3D+1%E5%8F%88%E6%9C%89%E4%BB%80%E4%B9%88%E6%84%8F%E4%B9%89%3F%E5%85%B6%E4%B8%AD%EF%BC%9Areg)
本人菜鸟,有个verilog的条件赋值语句的问题,assign clk_out = (F_DIV == 1) clock :(F_DIV[0] (clk_p_r & clk_n_r) :clk_p_r);F_DIV[0]是什么意思?F_DIV[0]不是一直是0吗?所以就选择clk_p_r?F_DIV == 1又有什么意义?其中:reg
本人菜鸟,有个verilog的条件赋值语句的问题,
assign clk_out = (F_DIV == 1)
clock :(F_DIV[0] (clk_p_r & clk_n_r) :clk_p_r);
F_DIV[0]是什么意思?F_DIV[0]不是一直是0吗?所以就选择clk_p_r?F_DIV == 1又有什么意义?
其中:reg clk_p_r; //上升沿输出时钟
reg clk_n_r; //下降沿输出时钟
......
parameter F_DIV = 50000; //分频系数
本人菜鸟,有个verilog的条件赋值语句的问题,assign clk_out = (F_DIV == 1) clock :(F_DIV[0] (clk_p_r & clk_n_r) :clk_p_r);F_DIV[0]是什么意思?F_DIV[0]不是一直是0吗?所以就选择clk_p_r?F_DIV == 1又有什么意义?其中:reg
这是一个双重判定语句.首先针对F_DIV[0] ? (clk_p_r & clk_n_r) : clk_p_r进行判定,判断F_DIV的第0位是否为1,如果为1,则判定结果为clk_p_r & clk_n_r,如果为0,判定结果为clk_p_r;然后进行二次判定,判定F_DIV 是否为1,如果为1,则clk_out=clock,如果不为1,则clk_out=第一次的判定结果.
另外,你这个F_DIV = 50000,则F_DIV[0]=0,所以一次判定结果为clk_p_r;又二次判定是f_div==1;故最终结果为clk_out=clock;
但是看不懂你这句语句为什么这么写.