集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2283|回复: 4

verilog编译仿真时出现问题(程序如下)

[复制链接]
tim 发表于 2010-6-27 23:42:16 | 显示全部楼层 |阅读模式
module compare(A,B,C,Max,Min,Med);
parameter width=8;
input [width-1:0] A,B,C;
output[width-1:0] Max,Min,Med;
reg [width-1:0] Max,Min,Med;
reg[1:0] a,b,c;
always @(A or B or C)
begin
if(A>B)
  a=2'b10;
  else if (A<B)
  a=2'b00;
  else a=2'b01;
if (B>C)
  b=2'b10;
  else if (B<C)
  b=2'b00;
  else
  b=2'b01;
if(A>C)
  c=2'b10;
  else if (A<C)
  c=2'b00;
  else
  c=2'b01;

case({a,b,c})
6'b101010: begin
     Max=A; Med=B; Min=C;
     end //A>B>C
6'b100010: begin
     Max=A; Med=C; Min=B;
     end //A>C>B
6'b100000: begin
     Max=C; Med=A; Min=B;
     end //C>A>B
6'b100001: begin
     Max=A;Med=A;Min=B;
     end //A=C>B
6'b100110: begin
     Max=A;Med=B;Min=B;
     end //A>B=C
6'b001010: begin
     Max=B;Med=A; Min=C;
     end //B>A>C
6'b001000: begin
     Max=B; Med=C; Min=A;
     end //B>C>A
6'b000101: begin
     Max=B;Med=C;Min=C;
     end //B>A=C;
6'b000000: begin
     Max=C;Med=B;Min=A;
     end //C>B>A
6'b000100: begin
     Max=C;Med=C;Min=A;
     end //C=B>A
6'b011010: begin
     Max=A;Med=A;Min=C;
     end //A=B>C
6'b010000: begin
     Max=C;Med=A;Min=A;
     end //C>A=B
6'b010101: begin
     Max=A;Med=A;Min=A;
     end //A=B=C
default: begin
   Max=0;Med=0;Min=0;
   end //$display("there is an error in the input data!");
endcase
end
endmodule
usd 发表于 2010-6-28 00:45:00 | 显示全部楼层
程序太繁琐了,用FUNCTION,在程序中调用应该好多了。。
ups 发表于 2010-6-28 01:25:32 | 显示全部楼层
可读性不是很好。。。。
usb 发表于 2010-6-28 03:03:30 | 显示全部楼层
有错吗?感觉代码没问题,modelsim仿了一下也没错啊。你应该把testbench和波形图贴上来。
CCIE 发表于 2010-6-28 03:31:36 | 显示全部楼层
出现什么问题也不帖出来?
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 09:24 , Processed in 0.061238 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表