Mahagam (23.07.2013 12:00, просмотров: 69) ответил MBedder на На АСМ86 - 9 строчек, на АСМ30 - 15
а ещё на верилоге: )))
module sin(
input reset, // async reset
input clock, // input clock
output [15:0] sin, // sin output: signed, 16-bit
output [15:0] cos, // cos output: signed, 16-bit
output sin_sqr, // sign(sin)
output cos_sqr // sign(cos)
);
parameter width = 16;
parameter InitCos = 32640;
reg [width-1:0] sin1, cos1;
always @(posedge clock) begin
if (reset) begin
sin1 <= 0;
cos1 <= InitCos;
end else begin
sin1 <= sin;
cos1 <= cos;
end
end
//the computator
assign sin = sin1 + {{7{cos1[15]}}, cos1[15:7]};
assign cos = cos1 - {{7{sin[15]}}, sin[15:7]};
//sign
assign sin_sqr = !sin[15];
assign cos_sqr = !cos[15];
endmodule