本实验的任务是描述一个3-8译码器电路,利用拨码开关输入不同的输入量,利用LED表示输出值。
译码器电路有n个输入和2n 个输出。每个输出都对应着一个可能的二进制输入。通常,一次只能有一个输出有效。编码器就是译码器的反向器件,他有2n输入和n个输出。3-8译码器的真值表如下,试写出8个输出的逻辑方程:
// -------------------------------------------------------------------- // >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<< // -------------------------------------------------------------------- // File name : gates.v // Module name : gates // Author : Step // Description : Logic gates // Web : www.stepfpga.com // // -------------------------------------------------------------------- // Code Revision History : // -------------------------------------------------------------------- // Version: |Mod. Date: |Changes Made: // V1.0 |2015/11/11 |Initial ver // -------------------------------------------------------------------- module decode38 ( //INPUT sw , //OUTPUT led ); //******************* //DEFINE INPUT //******************* //******************* input [2:0] sw ; //******************* //DEFINE OUTPUT //******************* output [7:0] led ; //******************** //OUTPUT ATTRIBUTE //******************** //WIRES reg [7:0] led1 ; //********************* //MAIN CORE //********************* //Plan A always @ (sw) begin case(sw) 3'b000: led1=8'b10000000; 3'b001: led1=8'b01000000; 3'b010: led1=8'b00100000; 3'b011: led1=8'b00010000; 3'b100: led1=8'b00001000; 3'b101: led1=8'b00000100; 3'b110: led1=8'b00000010; 3'b111: led1=8'b00000001; endcase end assign led=~led1; /* //Plan B assign led[0]=~(~a[2]&~a[1]&~a[0]); assign led[1]=~(~a[2]&~a[1]& a[0]); assign led[2]=~(~a[2]& a[1]&~a[0]); assign led[3]=~(~a[2]& a[1]& a[0]); assign led[4]=~( a[2]&~a[1]&~a[0]); assign led[5]=~( a[2]&~a[1]& a[0]); assign led[6]=~( a[2]& a[1]&~a[0]); assign led[7]=~( a[2]& a[1]& a[0]); */ endmodule
双击打开Lattice Diamond软件,点击File—New—Project新建工程,输入工程名称,指定工程保存目录,单击Next,选择设备如下:
点击File—New—File新建文件,类型选择Verilog Files,输入文件名称,选择保存路径,输入实验中的源代码后保存,编辑器会自动检查有无编辑错误,在下面的Output一栏会输出检查结果,如果有错误更正后重新保存直到没有报错为止。
按照步骤(2)新建一个Verilog仿真文件,输入实验例程中仿真文件的代码后保存。在软件File List一栏中,右键单击“仿真文件”—Include for—Simulation,将文件设置为仿真文件(设置完成后文件图标的V会消失)。
点击Tools选择Simulation Wizard或点击图标,按照仿真向导指示新建仿真工程,
仿真软件会自动启动、运行仿真并显示仿真结果。查看仿真结果是否符合预期功能,如果不符合电路功能,则修改Verilog代码保存后,在Active-HDL中选择Design—Compile All 重新编译文件,编译通过后,在Simulation中重新开始仿真。
在Lattice Diamond软件的Process一栏,双击第一项Synthesize Design进行综合(确保仿真文件设置为simulation后不参与综合),综合结果会在下面的Output一栏中给出,如果有错误则修改Verilog文件后重新综合直至综合成功为止。
双击Process一栏的Map Design和Place & Route Design完成FPGA内部的布局布线。
勾选并双击JEDEC File生成可下载的jed文件。