首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

编译预处理语句 if-else语句 02

编译预处理语句 if-else语句 02

5:奇偶校验位产生器

module parity(even_bit,odd_bit,input_bus);

output even_bit,odd_bit;

input[7:0] input_bus;

assign odd_bit = ^ input_bus; //产生奇校验位

assign even_bit = ~odd_bit; //产生偶校验位

endmodule

6同步置数、同步清零的计数器

module count(out,data,load,reset,clk);

output[7:0] out;

input[7:0] data;

input load,clk,reset;

reg[7:0] out;

always @(posedgeclk) //clk 上升沿触发

begin

if (!reset) out = 8'h00;//同步清0,低电平有效

else if (load)out = data; //同步预置

else out = out + 1; //计数

end

endmodule

7实现2 8 位数相乘

module mult_for(outcome,a,b);

parameter size=8;

input[size:1] a,b; //两个操作数

output[2*size:1] outcome; //结果

reg[2*size:1] outcome;

integer i;

always @(a orb)

begin

outcome=0;

for(i=1; i<=size;i=i+1) //for 语句

if(b) outcome=outcome+(a << (i-1));

end

endmodule

8带异步清0、异步置1 D 触发器

module DFF1(q,qn,d,clk,set,reset);

input d,clk,set,reset;

output q,qn;

reg q,qn;

always @(posedge clk or negedge set or negedge reset)

begin

if (!reset)begin

q <= 0; //异步清0,低电平有效

qn <= 1;

end

else if (!set) begin

q <= 1; //异步置1,低电平有效

qn <= 0;

end

else begin

q <= d;

qn <= ~d;

end

end

endmodule

98 位移位寄存器

module shifter(din,clk,clr,dout);

input din,clk,clr;

output[7:0] dout;

reg[7:0] dout;

always @(posedgeclk)

begin

if (clr) dout<=8'b0; //同步清0,高电平有效

else

begin

dout<= dout << 1; //输出信号左移一位

dout[0]<= din; //输入信号补充到输出信号的最低位

end

end

endmodule

10: 偶分频

偶分频比较简单,假设为N分频,只需计数到N/21,然后时钟翻转、计数清零,如此循环就可以得到N(偶)分频。代码如下。

module fp_even(clk_out,clk_in,rst);

output clk_out;

input clk_in;

input rst;

reg [1:0] cnt;

reg clk_out;

parameter N=6;

always @ (posedge clk_in or negedge rst)

begin

if(!rst)

       begin

              cnt<= 0;

              clk_out<= 0;

       end

else begin

        if(cnt==N/2-1)

              beginclk_out <= !clk_out; cnt<=0; end

        else

              cnt<= cnt + 1;

        end

end

endmodule

返回列表