微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog实现C的逻辑(一小部分代码,以后有时间会经常发布)

verilog实现C的逻辑(一小部分代码,以后有时间会经常发布)

时间:10-02 整理:3721RD 点击:
C语言:

for(i=0;i
#define N 20
void fun1(void);
int main()
{
        fun1();
        return 0;       
}
void fun1(void)
{
        int f1,f2;
        int f;
        int i;
        f1=1;
        f2=1;
        for(i=0;i<N-1;i++){
                f=f2;
                f2=f1+f2;
                f1=f;               
        }
        printf("%d\n",f2);
}
verilog版本(未调试):
module test(
input rst,
input clk,
output dout_valid,
output reg[15:0] dout
);
parameter N=17;
reg[4:0] count;
reg[15:0] sum_reg1;
reg[15:0] sum_reg2;
wire signed[16:0] sum1;
wire signed[15:0] sum2;
always @(negedge rst,posedge clk) begin
        if(!rst) begin
                count<='d0;
        end
        else if(count<N) begin
                count<=count+'d1;
        end
        else begin
                count<=count;
        end
end
always @(negedge rst,posedge clk) begin
        if(!rst) begin
                sum_reg1<='d1;
                sum_reg2<='d1
        end
        else begin
                sum_reg1<=sum2;
                sum_reg2<=sum_reg1;
        end
end
assign sum1=sum1_reg1+sum2_reg2;
assign sum2=(sum1[16:15]==2'b00 || sum1[16:15]==2'b11)?sum1[15:0]:(sum1[16])?16'h8000:16'h7fff;
assign dout_valid=(count==N)?1'b1:1'b0;
always @(negedge rst,posedge clk) begin
        if(!rst) begin
                dout<='d0;
        end
        else if(count==N-1) begin
                dout<=sum2;
        end
        else begin
                dout<=dout;
        end
end
endmodule

怎么只显示一半?

什么意思?哪个是只显示一半的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top