刚买了一个红色飓风二代的板子抓紧时间学习哈。
实验内容:
编写按键控制LED的程序和3/8译码器的程序,并在开发板上实现它们。
管脚对应:
push button | SW6 | SW5 | SW4 | SW3 |
FPGA Pin | P51 | P52 | P57 | P58 |
器件 | LED1 | LED2 | LED3 | LED4 | LED5 | LED6 | LED7 | LED8 |
FPGA Pin | P204 | P203 | P200 | P199 | P198 | P197 | P196 | P194 |
信号名称 | VD8 | VD7 | VD6 | VD5 | VD4 | VD3 | VD2 | VD1 |
时钟 50MHz P76
复位 SW2 P152
`timescale 1ns / 1ps module sw_led(clk, rst, sw0, sw1, sw2, sw3, led0, led1, led2, led3, led4, led5, led6, led7); input clk; input rst; input sw0; input sw1; input sw2; input sw3; output led0; output led1; output led2; output led3; output led4; output led5; output led6; output led7; wire led0; wire led1; wire led2; wire led3; wire led4; wire led5; wire led6; wire led7; wire [3 :0] sw; reg [7 :0] led; assign sw = {sw0,sw1,sw2,sw3}; assign {led0,led1,led2,led3,led4,led5,led6,led7} = led; always @ ( posedge clk or negedge rst) begin if(!rst) led<='b0; else case ( sw ) 4'b1110: led <= 8'b0000_0001; 4'b1101: led <= 8'b0000_0010; 4'b1011: led <= 8'b0000_0100; 4'b0111: led <= 8'b0000_1000; 4'b1100: led <= 8'b0001_0000; 4'b1001: led <= 8'b0010_0000; 4'b0011: led <= 8'b0100_0000; 4'b0110: led <= 8'b1000_0000; default: led <= 8'b0000_0000; endcase end endmodule
代码注意:因为开发板中的四个按钮中的默认输入为高电平,所以这里的编码看起来有点儿怪。
Macro Statistics
# ROMs : 1
16x8-bit ROM : 1
综合后利用了一个16x8-bit的ROM。
一个三八译码器:
module translater(clk,rst,din,dout); input clk,rst ; input [2 :0 ] din ; output[7 :0 ] dout ; reg [7 :0 ] dout ; always @ ( posedge clk or negedge rst ) if( !rst ) dout <= 8'b0000_0000 ; else case( {~din[2],~din[1],~din[0]} ) 3'b000: dout <= 8'b0000_0001 ; 3'b001: dout <= 8'b0000_0010 ; 3'b010: dout <= 8'b0000_0100 ; 3'b011: dout <= 8'b0000_1000 ; 3'b100: dout <= 8'b0001_0000 ; 3'b101: dout <= 8'b0010_0000 ; 3'b110: dout <= 8'b0100_0000 ; 3'b111: dout <= 8'b1000_0000 ; endcase endmodule