有关verilog HDL语言的

请问要实现这个真值表always@(????)写什么合适??... 请问要实现这个真值表 always@(????)写什么合适?? 展开
 我来答
跳拉丁舞的小猫64
2013-03-10 · TA获得超过233个赞
知道答主
回答量:46
采纳率:0%
帮助的人:58.2万
展开全部
module(CLK,CLR,A,B,Q);
input CLK;
input CLR;
input A;
input B;
output reg [7:0] Q; //因为在时序逻辑块中操作,强制规定Q为寄存器类型,默认端口为wire型
always@(posedge CLK or negedge CLR ) //CLK上升沿为模块触发条件,清零信号异步复位
begin
if(!CLR) //CLR信号低电平复位
Q <= 8'b0;
else if ((A == 1'b1)&&(B == 1'b1)) //依据判决条件进行操作
begin
Q[0] <= 1;
Q[7:1] <= Q[6:0];
end
else if (A == 1'b0)
begin
Q[0] <= 0;
Q[7:1] <= Q[6:0];
end
else Q <= Q; //其他条件下输出寄存器Q保持原值
end
endmodule
//如果你那里Q0代表最低位的话,要求右移不太恰当。会使输出结果始终为零,如果是左移的话
//如上面程序Q[7:1]<= Q[6;0]表达;如果Q0代表最高位 则替换成:
/*
Q[7] <= 1'b1;//或者是1‘b0
Q[6:0] <= Q[7:1];
*/
追问
关键就是那个第二行的CLK是低电频怎么描述呢,我不理解这个?
always @(??)这里是触发信号,但是写的是posedge CLK,那第二行低电频怎么解释呢?我刚学这个,想不通这个??
PEINFUL
2013-03-08 · TA获得超过183个赞
知道小有建树答主
回答量:114
采纳率:0%
帮助的人:143万
展开全部
你这样分析这个真值表:
1)在Q= 0,即CLR为低有效时,和CLK的状态无关(因为是CLK是X):说明CLR是异步低有效,所以有always@( negedge CLR)
2)Q其他情况有效时,都在CLK是上升沿时,加上1)里面的,最后是:always@( negedge CLR or posedge CLK)

小结:就是 输出数据变化时,这个变化依赖谁,谁就得写在always@( )里面

希望能帮到你!
追问
那第二行的CLK低电平怎么描述呢??
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式