99aqaq 发表于 2011-9-22 12:42:02

急急急!!!请问这个程序怎么该

module q1(a,out);
input a;
output out;

reg clk;
for(clk=0;clk<1000;clk=clk+1)








out=(clk==100)?~a:a;

endmodule

pengdan0905 发表于 2011-9-22 13:33:43

请问您是要实现什么功能?

99aqaq 发表于 2011-9-22 13:41:24

回复 1# 99aqaq


    输出一个方波

99aqaq 发表于 2011-9-22 13:42:18

回复 3# 99aqaq


    这个程序怎么改才能不出错呢

pengdan0905 发表于 2011-9-22 15:09:51

你直接用计数器不可以吗?貌似很少用for语句吧

pengdan0905 发表于 2011-9-22 15:10:40

你把for语句的那部分改了估计就可以了

endmodule 发表于 2011-9-22 21:43:05

module q1(a,out);
input a;
output out;
reg clk;
always@(posedge a)
if(clk<1000)
   clk<=0;
else
   clk<=clk+1;

assign out=(clk==100)?~a:a;
endmodule

冰下月影 发表于 2011-9-23 07:39:38

module q1(clk,a,out);
input clk;
input a;
output out;
wire out;
reg cnt;

assign out=(cnt==100)?~a:a;

always@(posedge clk)
if(cnt<1000)
   cnt<=0;
else
   cnt<=cnt+1;
endmodule
这个是按照你给的程序改改试试 但是感觉clk没必要定义那么大吧?
感觉你那里少了一个时钟输入。我也是新手

endmodule 发表于 2011-9-23 22:22:56

他是没按套路出牌,他的程序中a是时钟,clk是计数寄存器

哦十全_至芯学员 发表于 2011-9-23 22:35:33

module q1(a,out);
input a;
output out;
reg clk;
for(clk=0;clk<1000;clk=clk+1)
out=(clk==100)?~a:a;//当clk为100时候a取反 否则为a 这条语句执仿真时候应该out一直为a,原因是硬件中for语句执行速度超短,这条语句out=(clk==100)?~a:a;和out=a没什么区别。不像c语言中for执行有指令周期,out=~a还能维持一个指令周期。

endmodule
页: [1] 2
查看完整版本: 急急急!!!请问这个程序怎么该